假设您在用户控制器中,并且希望获得显示请求的json响应,如果您可以在视图/用户/目录中创建一个名为show.json的文件,并在users#show操作完成后呈现该文件,那就更好了。
目前,您需要做的事情大致如下:
def show
@user = User.find( params[:id] )
respond_to do |format|
format.html
format.json{
render :json => @user.to_json
}
end
end
但是如果你能创建一个自动渲染的show.json文件,那就更好了:
def show
@user = User.find( params[:id] )
respond_to do |format|
format.html
format.json
end
end
这将为我节省大量的痛苦,并将我在控制器中呈现json时的那种可怕的肮脏感觉洗掉。
发布于 2010-01-19 02:43:09
您应该能够在您的respond_to
块中执行以下操作:
respond_to do |format|
format.json
render :partial => "users/show.json"
end
这将在app/views/users/_show.json.erb
中呈现模板。
发布于 2010-01-19 02:43:10
尝试添加一个视图users/show.json.erb
这应该在您请求JSON格式时呈现,并且您还获得了erb呈现它的额外好处,因此您的文件可能如下所示
{
"first_name": "<%= @user.first_name.to_json %>",
"last_name": "<%= @user.last_name.to_json %>"
}
发布于 2011-08-29 05:47:05
如果您正在寻找一种更干净的ERb语法替代方案,那么RABL可能是我所见过的最好的解决方案。作为其他解决方案的json_builder和argonaut似乎都有些过时,如果不打补丁就不能在Rails3.1上工作。
可以通过gem或查看GitHub存储库获得RABL;这也是很好的例子。
https://stackoverflow.com/questions/2088280
复制相似问题