Ruby on rails 为什么我的带有嵌套模型的rails表单不记得表单值?
我有一个名为user\u order的助手,它返回order的一个实例。订单接受用户和地址的嵌套属性。我的缩写形式如下所示: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 %&
<%= 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 %>