Ruby on rails 为什么我的带有嵌套模型的rails表单不记得表单值?

Ruby on rails 为什么我的带有嵌套模型的rails表单不记得表单值?,ruby-on-rails,ruby-on-rails-3.1,form-for,nested-form-for,Ruby On Rails,Ruby On Rails 3.1,Form For,Nested Form For,我有一个名为user\u order的助手,它返回order的一个实例。订单接受用户和地址的嵌套属性。我的缩写形式如下所示: <%= form_for user_order, :url => checkouts_path, :method => :post do |order| %> <%= order.fields_for :user_attributes do |user| %> <%= user.text_field :email %&

我有一个名为user\u order的助手,它返回order的一个实例。订单接受用户和地址的嵌套属性。我的缩写形式如下所示:

<%= form_for user_order, :url => checkouts_path, :method => :post do |order| %>
  <%= order.fields_for :user_attributes do |user| %>
    <%= user.text_field :email %>
  <% end %>
<% end %>
控制器代码:

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的值


为什么会这样?

您是否从rails控制台尝试过该控制器代码并确保其正常工作

您的development.log文件是否显示它实际上正在尝试表单提交上的sql insert语句


编辑:重读时,听起来像是发生了insert stmt。nm第二个问题,尽管里面可能还有一些信息。

经过实验,我发现这是可行的:

控制器:

def new
  @order = Order.new
  @order.build_user
end
视图:


我想你需要发布你的控制器代码来计算此输出。请显示你的模型之间的关系。我更新了代码以包含模型/控制器。我可以成功提交表单,并且一切正常,因此我相信控制器代码可以正常工作。只是当我有错误时,它不会显示存储的值。但是当你使用与表单相同的参数运行它时,它会删除email参数吗?我发现将其放在application.html.erb的底部很有用,仅供参考:
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 %>