以下代码有什么作用?

时间:2011-01-01 08:55:22

标签: ruby-on-rails ruby

我在rails中创建了一个项目

demo
。然后,我通过提供
 rail_apps/demo> script server products title :stiring,description :text,url: string 

创建了一个脚手架应用程序

然后我给了

 http://localhost:3000/products/ 

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 个答案:

答案 0 :(得分:5)

@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文件并将此文件作为响应发送。

答案 1 :(得分:0)

要呈现index操作,首先查找所有产品并将其分配给变量@products,然后根据客户端的需要(例如,如果URL结束,则使用HTML或XML进行响应) .xml客户想要XML。

如果客户端需要HTML,则呈现index.html.erb(Rails会根据控制器名称和操作名称找到模板本身,因此ProductsControllerindex会使Rails查找app/views/products/index.html.erb

如果客户端需要XML,则从@products变量渲染XML(Rails可以通过查看其属性自动将ActiveRecord对象或对象数组序列化为XML)。