Почему мои рельсы form_for с вложенными моделями не запомнят значения формы?

У меня есть помощник по имени 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 не запоминаются, когда форма отправляется с ошибками и форма перерисовывается.

Почему это может быть?

2 ответа

Решение

После экспериментов я понял, что это работает:

контроллер:

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

Посмотреть:

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

Вы пробовали этот код контроллера с консоли rails и убедились, что он работает?

Показывает ли ваш файл development.log, что он на самом деле пытается выполнить оператор вставки SQL при отправке формы?

Редактировать: при перечитывании это звучит как вставка stmt происходит. НМ второй вопрос, хотя там еще может быть некоторая информация.

Другие вопросы по тегам