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执行以下操作:
params.require(:user.Permit(…)
text\u字段的结果:
<% builder.text_field :name %>
此外,建议阅读指南“”以了解控制器的详细信息
<%= builder.text_field :name %>