[英]Accepting nested attributes for parent model
嘗試接受User模型的嵌套屬性時,我收到以下錯誤:
Couldn't find User with ID=1 for Sale with ID=
促銷型號:
class Sale < ActiveRecord::Base
belongs_to :user
accepts_nested_attributes_for :user
end
用戶模型:
class User < ActiveRecord::Base
has_many :sales
end
查看模板:
<%= form_for @sale, :html => {:class => "stagedForm bigForm"} do |f| %>
<% if @sale.errors.any? %>
<div id="errorExplanation">
<h2><%= pluralize(@sale.errors.count, "error") %> prohibited this user from being saved:</h2>
<ul>
<% @sale.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<fieldset>
<legend>When</legend>
<div class="field">
<%= f.label :start_time %>
<%= f.datetime_select :start_time, :minute_step => 10, :default => Time.now+1.week, :order => [:day, :month, :year] %>
</div>
<div class="field">
<%= f.label :end_time %>
<%= f.datetime_select :end_time, :default => Time.now+( 1.week + 2.hours), :minute_step => 10, :order => [:day, :month, :year] %>
</div>
</fieldset>
<fieldset>
<legend>Payment</legend>
<%= f.fields_for :user do |u| %>
<%= u.hidden_field :stripe_card_token %>
<% end %>
</fieldset>
<div style="clear:both;"></div>
<div class="actions">
<%= f.submit "create", :id => "saveForm" %>
</div>
<% end %>
銷售主管:
def new
user = User.find(current_user.id)
@sale = user.sales.build
logger.debug "user locations #{user.locations}"
@locations = user.locations
1.times { @sale.items.build; @sale.build_location; }
end
def create
@sale = Sale.new(params[:sale])
@sale.user_id = current_user.id
logger.debug "Sale object!!! #{@sale.inspect}"
respond_to do |format|
if @sale.save
format.html { redirect_to @sale, notice: 'Sale was successfully created.' }
format.json { render json: @sale, status: :created, location: @sale }
else
format.html { render action: "new" }
format.json { render json: @sale.errors, status: :unprocessable_entity }
end
end
end
嵌套屬性允許您通過父級保存關聯記錄的屬性。 所以你應該在用戶模型中擁有accepts_nested_attributes_for:sales。
當您嘗試使用銷售作為子記錄更新用戶模型時,嵌套屬性會受到攻擊。
您應該使用hidden_field_tag從視圖中傳遞user_id(上面與Sale相關聯)或者當銷售屬於User時,您可以使用select標簽來選擇用戶。
http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.