2012-08-31 224 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