我如何在佣金中使用佣工?
我可以在耙子中使用辅助方法吗?
是的你可以。 你只需要求助手文件,然后在你的rake文件中包含这个助手(实际上这个助手是一个我们可以包含的混合)。
例如,在这里我有一个app / helpers目录中的application_helper文件,其中包含:
module ApplicationHelper def hi "hi" end end
所以这里是我的耙文件的内容:
require "#{Rails.root}/app/helpers/application_helper" include ApplicationHelper namespace :help do task :hi do puts hi end end
这是我的terminal的结果:
god:helper-in-rake arie$ rake help:hi hi
正如lfender6445所提到的那样,使用include ApplicationHelper
(如Arie的答案)将会污染包含您的任务的顶级作用域。
这是一个避免不安全副作用的替代解决scheme。
首先,我们不应该把我们的任务助手放在app/helpers
。 引用“我的代码在哪里?” 在codefol.io:
Rails的“助手”是非常明确的看法助手。 它们自动包含在视图中,但不包含在控制器或模型中。 这是有目的的。
由于app/helpers
是用于视图助手,Rake任务不是视图,所以我们应该把我们的任务助手放在别的地方。 我build议lib/task_helpers
。
在lib/task_helpers/application_helper.rb
:
module ApplicationHelper def self.hi "hi" end end
在您的Rakefile
或lib/tasks
一个.rake
文件中:
require 'task_helpers/application_helper' namespace :help do task :hi do puts ApplicationHelper.hi end end
我不确定这个问题最初是关于在Rake任务中包含视图助手还是仅仅是Rake任务的“辅助方法”。 但是,跨视图和任务共享助手文件并不理想。 相反,在视图和任务中使用你想使用的助手,并把它们移到一个单独的依赖项中,这个依赖项包含在视图助手和任务助手中。