user_order
のインスタンスを返すというヘルパーがありますOrder
。およびOrder
のネストされた属性を受け入れます。私の(省略形の)フォームは次のようになります。User
Address
<%= form_for user_order, :url => checkouts_path, :method => :post do |order| %>
<%= order.fields_for :user_attributes do |user| %>
<%= user.text_field :email %>
<% end %>
<% end %>
Order.rbモデルコード:
belongs_to :user
accepts_nested_attributes_for :user
validates_associated :user
attr_accessible :user
コントローラーコード:
def new
@order = user_order # user_order is a method to get order from session
end
def create
@order = user_order
if @order.update_attributes(params[:order])
redirect_to @order
else
render :new
end
end
フォームがエラーで送信され、フォームが再レンダリングされた場合、user.emailの値は記憶されません。
なぜそうなのか?