我有一些(或所有)控制器需要的Ruby方法。我尝试将它们放入/app/helpers/application_helper.rb
。我已经将它用于视图中使用的方法。但是控制器看不到那些方法。还有其他地方我应该放或者我需要以不同方式访问这些帮助方法吗?
使用最新的稳定Rails。
答案 0 :(得分:70)
您应该在ApplicationController
。
答案 1 :(得分:61)
对于Rails 4起,关注点是要走的路。这里有一篇不错的文章 http://richonrails.com/articles/rails-4-code-concerns-in-active-record-models
从本质上讲,如果您查看您的控制器文件夹,您应该会看到一个关注子文件夹。沿着这些行创建一个模块
module EventsHelper
def do_something
end
end
然后,在控制器中只包括它
class BadgeController < ApplicationController
include EventsHelper
...
end
答案 2 :(得分:27)
你应该在应用程序控制器中定义方法,如果你有很少的方法,那么你可以按照以下方法进行操作
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
答案 3 :(得分:15)
您可以使用view_context
从控制器调用任何辅助方法,例如
view_context.my_helper_method
答案 4 :(得分:7)
Ryan Bigg的反应很好。
其他可能的解决方案是向控制器添加助手:
class YourController < ApplicationController
include OneHelper
include TwoHelper
end
最诚挚的问候!
答案 5 :(得分:0)
将帮助程序包含在控制器中将最终将帮助程序方法公开为动作!
# With new rails (>= 5)
helpers.my_helper_method
# For console
helper.my_helper_method