开发者

Why won't my rails form_for with nested models won't remember form values?

I have a helper called user_order which returns an instance of Order. Order accepts nested attributes for User and Address. My (abbreviated) form looks like this:

<%= 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 model code:

belongs_to :user
acce开发者_运维问答pts_nested_attributes_for :user
validates_associated :user
attr_accessible :user

Controller code:

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

Values for user.email are not remembered when the form is submitted with errors and the form is re-rendered.

Why might that be?


Have you tried that controller code from the rails console and made sure it works?

Does your development.log file show it is actually attempting an sql insert statement on form submit?

Edit: on reread, it sounds like an insert stmt is happening. nm the second question, although there still may be some info in there.


After experimenting, I figured out that this works:

controller:

def new
  @order = Order.new
  @order.build_user
end

view:

<%= form_for @order do |order_fields| %>
  <%= order_fields.order.fields_for :user do |user_fields| %>
    <%= user_fields.text_field :email %>
  <% end %>
<% end %>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜