Ruby on rails 如何在rails中以嵌套形式更新子记录

Ruby on rails 如何在rails中以嵌套形式更新子记录,ruby-on-rails,Ruby On Rails,提交下表时,我如何更新子“产品”行集合 非常感谢 class User < ActiveRecord::Base has_many :prod

提交下表时,我如何更新子“产品”行集合

非常感谢

class User < ActiveRecord::Base                                                                                                                                                                             
   has_many :products, :class_name => 'Product', :inverse_of => :user                                                                                                                                       
   accepts_nested_attributes_for :products                                                                                                                                                                  
end                                                                                                                                                                                                         

class Product < ActiveRecord::Base                                                                                                                                                                          
    belongs_to :user, :inverse_of => :products                                                                                                                                                          
end   
class用户'Product',:相反的=>:user
接受:产品的\u嵌套\u属性\u
结束
类产品:products
结束
景色

<%= form_for(@user) do |f| %>                                                                                                                                                                               

  <div class="field">                                                                                                                                                                                       
    <%= f.label :name %><br>                                                                                                                                                                                
    <%= f.text_field :name %>                                                                                                                                                                               
  </div>                                                                                                                                                                                                    
  <%= f.fields_for :products do |builder| %>                                                                                                                                                                
      <% builder.text_field :name %>                                                                                                                                                                    
  <% end %>                                                                                                                                                                                                 
  <div class="actions">                                                                                                                                                                                     
    <%= f.submit %>                                                                                                                                                                                         
  </div>                                                                                                                                                                                                    
<% end %>                                                                                                                                                                                                   



这里有一些最小的
更新
操作:

# app/controller/users_controller.rb

def update 
  # Get the user in param
  @user = User.find(params[:id])

  # Update attributes
  if @user.update_attribute(params[:user]) 
    # Redirect to :show for this user.  
    redirect_to :show
  else 
    # update_attriubtes failed.  Render the edit view. 
    render :edit
  end
end
其次,您还需要确保属性可以批量分配,以便调用
@user.update_attributes
成功。由于您没有使用适当的Rails版本标记您的问题,因此您可以对Rails 3和Rails 4执行以下操作:

  • Rails 3-定义要批量分配为可访问属性的每个属性
  • Rails 4-允许控制器中的参数
    params.require(:user.Permit(…)
  • 请注意,在您的视图中,您没有在这一行上输出helper
    text\u字段的结果:

    <% builder.text_field :name %> 
    
    此外,建议阅读指南“”以了解控制器的详细信息

    <%= builder.text_field :name %>