我指的是您在app/helpers
中创建的模块。它们是否可用于:
答案 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
。