Почему мои рельсы form_for с вложенными моделями не запомнят значения формы? - PullRequest
1 голос
/ 16 сентября 2011

У меня есть помощник по имени 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 ]

0 голосов
/ 15 октября 2011

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

Контроллер:

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 %>
0 голосов
/ 16 сентября 2011

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

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

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

...