2010-12-12 3 views
2

Quelle est la différence entre ceci:méthode fields_for en Ruby on Rails

contrôleur

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

Vue:

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

Je peux extraire les valeurs dans l'objet params comme ceci params [: user] et params [: order]

Mais je pourrais aussi avoir écrit:

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

et je aurais pu extraire les valeurs dans le params-objet comme celui-ci params [: user] [: commande].

L'égalité est-elle, se distinguant par la façon dont j'extraire des valeurs?

Répondre

2

En général, vous pouvez utiliser la version imbriquée de fields_for si vous utilisiez cette ligne dans votre modèle User:

has_many :orders 
accepts_nested_attributes_for :orders 

En définissant cela, vous serez en mesure de créer un nouvel utilisateur et nouveau record de commande * s * en même temps en utilisant ce dans l'action create de votre UsersController:

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

Parce que vous utilisez accepts_nested_attributes_for maintenant, les attributs de l'ordre seront transmis comme params[:user][:orders_attributes].

+0

Merci beaucoup! – LuckyLuke