编写Rails应用程序我以前在视图中没有任何实例变量,而是在控制器上定义helper_method
s。这些方法将由控制器和视图以相同的方式使用。这使我的代码干净。现在使用Rails 5中的api
模式,我不能再这样做了,helper_method
不存在。在视图中使用变量是我最讨厌的事情之一。
例如
class ProductsController < ActionController::API
helper_method :products, :current_user
private
def products
@products ||= current_user.products
end
def current_user
@current_user ||= User.find(session[:user_id])
end
end
在index.json.jbuilder
视图中,我想以这种方式使用它。
json.products products do |product|
json.name product.name
json.price product.price
# and so on
end
答案 0 :(得分:2)
我没有对此进行测试,但您可以尝试在AbstractController::Helpers
之前在控制器中添加helper_method
模块
include AbstractController::Helpers
helper_method
https://github.com/rails/rails/blob/b5db73076914e7103466bd76bec785cbcfe88875/actionpack/lib/abstract_controller/helpers.rb