Rails助手在哪里可用?

时间:2017-04-15 22:37:46

标签: ruby-on-rails ruby-on-rails-5

我指的是您在app/helpers中创建的模块。它们是否可用于:

  • 视图?
  • 控制器?
  • 模型?
  • 测试?
  • 其他档案?
  • 有时?
  • 一直?

1 个答案:

答案 0 :(得分:9)

在Rails 5中,所有视图和所有控制器都可以使用所有助手,而不是其他任何助手。

http://api.rubyonrails.org/classes/ActionController/Helpers.html

  

默认情况下,这些助手可供所有模板使用。

     

默认情况下,每个控制器都包含所有帮助程序。

在视图中,您可以直接访问帮助程序:

module UserHelper
  def fullname(user)
    ...
  end
end

# app/views/items/show.html.erb
...
User: <%= fullname(@user) %>
...

在控制器中,您需要使用#helpers方法来访问它们:

# app/controllers/items_controller.rb
class ItemsController
  def show
    ...
    @user_fullname = helpers.fullname(@user)
    ...
  end
end

您仍然可以通过include在其他类中使用辅助模块。

# some/other/klass.rb
class Klass
  include UserHelper
end

旧的行为是所有助手都包含在所有视图中,并且每个助手都包含在匹配的控制器中,例如。 UserHelper只会包含在UserController中。

要返回此行为,您可以在config.action_controller.include_all_helpers = false文件中设置config/application.rb

相关问题