исходный код ruby, сгенерированный rails - PullRequest
0 голосов
/ 02 февраля 2012

Я новый в рубине и рельсах.

Следуя инструкциям в документе, я создаю приложение для блога.

Однако, когда я вижу сгенерированный код, я обнаружил, что не могу их понять, например:

  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 Ответ

1 голос
/ 02 февраля 2012

Метод 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 немедленно выполнить его рендеринг вместо поиска файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...