虽然我意识到你应该在视图中使用一个帮助器,但我需要在我的控制器中使用一个帮助器,因为我正在构建一个JSON对象以返回。
它是这样的:
def xxxxx
@comments = Array.new
@c_comments.each do |comment|
@comments << {
:id => comment.id,
:content => html_format(comment.content)
}
end
render :json => @comments
end
我如何访问我的html_format助手?
注意:这是在Rails 2天内编写和接受的;如今,格罗斯的答案是正确的。
选项1:可能最简单的方法是在你的控制器中包含你的helper模块:
class MyController < ApplicationController
include MyHelper
def xxxx
@comments = []
Comment.find_each do |comment|
@comments << {:id => comment.id, :html => html_format(comment.content)}
end
end
end
选项2:或者你可以将helper方法声明为类函数,并像这样使用它:
MyHelper.html_format(comment.content)
如果你想同时作为实例函数和类函数使用它,你可以在你的helper中声明这两个版本:
module MyHelper
def self.html_format(str)
process(str)
end
def html_format(str)
MyHelper.html_format(str)
end
end
在Rails 5中使用helper。控制器中的Helper_function。
例子:
def update
# ...
redirect_to root_url, notice: "Updated #{helpers.pluralize(count, 'record')}"
end
来源:来自@Markus关于不同答案的评论。我觉得他的答案应该有自己的答案,因为这是最干净、最简单的解决方案。
参考:https://github.com/rails/rails/pull/24866