2012-08-31 118 views
0

我试图使一个窗体与一个模型(“请求”)嵌套在另一个(“订单”)的网站。具体来说,我希望订单/新页面具有由用户可以填写然后提交的请求组成的表单,因此它们都与创建的订单相关联。表格与嵌套模型

对某人这里的建议,我研究了关于该主题(#196)的Railscast,并且遇到了一个我无法弄清的问题,所以我想我会问。问题是,我遵循他的指示,但请求表单没有显示出来。然而,与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 

帮助?我被这个超级困惑了。我猜这个问题可能与“建设者”有关,但我对此很陌生,一个小时左右的摆弄工作并没有产生太大的影响。

真的很感谢任何帮助。 (另外,作为一个后脚本,我放弃了,上床睡觉,明天再来看看,对不起,如果我没有跟上任何问题的话)。

谢谢!

回答

1

我在这里看到两个错误。

在视图中,替换:

<% f.fields_for :requests do |builder| %> 

有了:

<%= f.fields_for :requests do |builder| %> 

在您的订单modeil,替换:

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