2010-12-12 91 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