rails生成的ruby源代码

时间:2012-02-02 13:25:36

标签: ruby-on-rails ruby ruby-on-rails-3

我是红宝石和铁轨的新人。

按照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 }>?

1 个答案:

答案 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立即呈现它而不是查找文件。