我在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
但我真的无法理解这四行代码。有人能给我带头吗?
答案 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会根据控制器名称和操作名称找到模板本身,因此ProductsController
和index
会使Rails查找app/views/products/index.html.erb
如果客户端需要XML,则从@products
变量渲染XML(Rails可以通过查看其属性自动将ActiveRecord对象或对象数组序列化为XML)。