我是红宝石和铁轨的新人。
按照ror文档中的指南,我创建了博客应用程序。
当我看到生成的代码时,我发现我无法理解它们,因为exmpale:
def show
@post = Post.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @post }
end
end
repond_to是一个方法(不是吗?),以下块是参数?
然而,块内部的代码是什么意思?
format.html # show.html.erb
format.json { render json: @post }
format.html是方法的名称还是别的什么?
如何{ render json: @post }
>?
答案 0 :(得分:1)
respond_to
方法可帮助您以请求的格式传送内容。例如,如果您调用/posts/1.json
,则响应将是JSON文件。如果是/posts/1.html
,则响应将是HTML页面。未提供扩展时的默认设置是呈现HTML。
format.json
方法告诉Rails在请求扩展时要做什么,例如,如果对于每个JSON请求你想增加一个计数器,而不是HTML请求,你可以这样做:
format.json {
counter = counter + 1
render json: @post
}
如果您没有为format.json
方法提供阻止,Rails会自动尝试在views/posts/
内查找show.json.erb
文件,并进行渲染。在您提供的方法中,render json: @post
告诉Rails立即呈现它而不是查找文件。