2010-12-12 90 views
2

是什么此之间的差:Fields_for方法在Ruby on Rails的

控制器

@user = User.new
@order = Order.new

视图:

<%= form_for :user do |user| %> 
    ... 
    ... 
    <%= fields_for :order do |order| %> 
    ... 
    ... 
    <% end %> 
<% end %> 

我可以像params [:user]和params [:order]提取params对象中的值

但我还可以这样写:

<%= form_for :user do |user| %> 
    ... 
    ... 
    <%= user.fields_for :order do |order| %> 
    ... 
    ... 
    <% end %> 
<% end %> 

和我可以提取在PARAMS-对象中的值这样PARAMS [:用户] [:指令]。

是否相等,区分我从中提取的值?

回答

2

一般来说,你会如果你在你的User模型中使用这条线使用的fields_for嵌套版本:

has_many :orders 
accepts_nested_attributes_for :orders 

通过定义这一点,你就可以创建新的用户和新的订单记录* create行动的UsersController使用这个S *在同一时间:

@user = User.new(params[:user]) 

因为你使用accepts_nested_attributes_for现在,订单属性将通过params[:user][:orders_attributes]传递。

+0

谢谢先生! – LuckyLuke 2010-12-12 22:58:46