что делает следующий код? - PullRequest
0 голосов
/ 01 января 2011

я создал проект

demo
в рельсах.Затем я создал приложение в скаффолде, дав
rail_apps/demo> script server products title :stiring,description :text,url: string 

Затем я дал

<a href="http://localhost:3000/products/" rel="nofollow">http://localhost:3000/products/</a> 

products_controller.rb содержит следующий фрагмент кода

class ProductsController < ApplicationController
  # GET /products
  # GET /products.xml
  def index
    @products = Product.find(:all)

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @products }
end
  end
end

, но ядействительно не могу понять эти четыре строки кода.Кто-нибудь может дать мне руководство?

Ответы [ 2 ]

5 голосов
/ 01 января 2011
@products = Product.find(:all)

извлекает все продукты из базы данных.

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @products }
end

- это обычный шаблон в RoR.На основании запроса контроллер отображает другое представление.Например, если вы запросите /products, он передаст продукты в представление index.html.erb, которое является просто html-шаблоном.Если запрос /products.xml, он будет сериализовать продукты в файл XML и отправит этот файл в ответ.

0 голосов
/ 01 января 2011

Чтобы отобразить действие index, сначала найдите все продукты и назначьте их переменной @products, затем ответьте либо HTML, либо XML, в зависимости от того, что хочет клиент (например, если URL заканчивается на .xml, клиент хочет XML.

Render index.html.erb, если клиент хочет HTML (Rails находит сам шаблон на основе имени контроллера и имени действия, поэтому ProductsController и index заставляют Rails искать app/views/products/index.html.erb.

Рендеринг XML из переменной @products, если клиент хочет XML (Rails может автоматически сериализовать объект ActiveRecord или массив объектов, как XML, просматривая его свойства).

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