我正在尝试创建一个网站,其中包含一个模型(“请求”)的表单嵌套在另一个模型(“订单”)中。具体来说,我希望订单/新页面的表单由用户可以填写然后提交的请求组成,因此它们都与创建的订单相关联。
对于某人的建议,我查看了关于主题的Railscast(#196),我遇到了一个我无法弄清楚的问题,所以我想我会问。问题是,我正在遵循他的指示,但请求表格并没有出现。然而,与Order模型相关联的表单字段出现了,我真的很困惑,因为我基本上复制了Railscast逐字。想法?
这是我的表单代码。它特别是fields_for标记中没有出现在我的网站上的部分:
<%= form_for(@order) do |f| %>
<% if @order.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@order.errors.count, "error") %> prohibited this order from being saved:</h2>
<ul>
<% @order.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<p>
<%= f.label :user_name %><br />
<%= f.text_field :user_name %>
</p>
<p>
<%= f.label :user_email %><br />
<%= f.text_field :user_email %>
</p>
<% f.fields_for :requests do |builder| %>
<p>
<%= builder.label :item, "Item" %><br />
<%= builder.text_field :item %>
</p>
<p>
<%= builder.label :lbs, "LBs" %> <br />
<%= builder.text_field :lbs %>
</p>
<% end %>
<p><%= f.submit "Submit Order" %></p>
<% end %>
这是我的两个模型的代码,首先订购:
class Order < ActiveRecord::Base
attr_accessible :order_status, :price_estimate, :price_final, :user_email, :user_name, :user_phone
has_many :requests, :dependent => :destroy
accepts_nested_attributes_for :requests
end
class Request < ActiveRecord::Base
attr_accessible :item, :lbs, :notes, :order_id, :status
belongs_to :order
end
最后,如果它是相关的,我根据演员的建议添加到我的订单控制器创建操作的位:
def new
@order = Order.new
3.times { @order.requests.build }
respond_to do |format| # this part I copied from a tutorial. But when I commented it out, it didn't change anything, so I don't think this is the problem
format.html # new.html.erb
format.json { render json: @order }
end
end
帮助?我对此非常困惑。我猜这个问题可能与“建设者”有关,但我对此很陌生,一小时左右的摆弄并没有产生太大的影响。
真的很感激任何帮助。 (另外,作为一个后期剧本。我放弃并上床睡觉,明天再看看。对不起,如果我没有跟进任何问题那么就可以了。)
谢谢!
答案 0 :(得分:1)
我在这里看到两个错误。
在视图中,替换:
<% f.fields_for :requests do |builder| %>
使用:
<%= f.fields_for :requests do |builder| %>
在您的订单模式中,替换:
attr_accessible :order_status, :price_estimate, :price_final, :user_email, :user_name, :user_phone
使用:
attr_accessible :order_status, :price_estimate, :price_final, :user_email, :user_name, :user_phone, :requests_attributes