我花了最近几天的时间阅读并熟悉自己的把手。我的模板很棒。
现在我正在处理我的一个部分,其中包含一些html,其中我使用了诸如simple_format,time_ago_in_words之类的帮助程序。显然这些助手不能与把手一起使用。所以我想做这样的事情:
def get_micropost
respond_to do |format|
format.json { render json: formatted_micropost_json_data(Micropost.where("id < ?", params[:micropost_id]).first) }
end
end
Microposts帮助:
module MicropostsHelper
def formatted_micropost_json_data(micropost)
content: simple_format h(micropost.content)
created_at: time_ago_in_words(micropost.created_at)
id: micropost.id
image: micropost.image
link: micropost.link
poster_id: micropost.poster_id
updated_at: micropost.updated_at
user_id: micropost.user_id
end
end
因此,当我通过ajax调用获取JSON时,它已经被正确格式化了。然后我可以简单地正常显示我的把手变量。
这会工作吗?
如果不是最好的方法是什么?
亲切的问候
答案 0 :(得分:4)
这是我建议的代码重写:
class Micropost
def formatted_json_data
{
content: simple_format(h(self.content)),
created_at: time_ago_in_words(self.created_at),
id: self.id,
image: self.image,
link: self.link,
poster_id: self.poster_id,
updated_at: self.updated_at,
user_id: self.user_id
}
end
end
def get_micropost
respond_to do |format|
format.json do
posts = Micropost.where("id < ?", params[:micropost_id])
data = posts.first.formatted_json_data
render(json: data)
end
end
end
你想在你的方法中使用一个哈希文字 - 你原来的不是语法上有效的ruby代码。
同样打破长链接方法调用可能会产生更多信息性错误消息,并提供更清晰的处理机会。