我有某些(或所有)控制器需要的 Ruby 方法。我试着把它们放进去/app/helpers/application_helper.rb
。我已经将它用于视图中使用的方法。但是控制器看不到这些方法。我应该把它们放在另一个地方还是我需要以不同的方式访问这些辅助方法?
使用最新的稳定 Rails。
我有某些(或所有)控制器需要的 Ruby 方法。我试着把它们放进去/app/helpers/application_helper.rb
。我已经将它用于视图中使用的方法。但是控制器看不到这些方法。我应该把它们放在另一个地方还是我需要以不同的方式访问这些辅助方法?
使用最新的稳定 Rails。
你应该在里面定义方法ApplicationController
。
从 Rails 4 开始,关注点是要走的路。有一篇不错的文章仍然可以通过 Wayback Machine查看。
本质上,如果您查看控制器文件夹,您应该会看到关注子文件夹。沿着这些线在那里创建一个模块
module EventsHelper
def do_something
end
end
然后,在控制器中只包含它
class BadgeController < ApplicationController
include EventsHelper
...
end
您应该在应用程序控制器中定义方法,如果您的方法很少,那么您可以执行以下操作
class ApplicationController < ActionController::Base
helper_method :first_method
helper_method :second_method
def first_method
... #your code
end
def second_method
... #your code
end
end
您还可以包括以下帮助文件
class YourController < ApplicationController
include OneHelper
include TwoHelper
end
您可以使用从控制器调用任何辅助方法view_context
,例如
view_context.my_helper_method
Ryan Bigg 的反应很好。
其他可能的解决方案是向您的控制器添加助手:
class YourController < ApplicationController
include OneHelper
include TwoHelper
end
最好的祝福!
在控制器中包含助手最终会将助手方法公开为操作!
# With new rails (>= 5)
helpers.my_helper_method
# For console
helper.my_helper_method