2012-08-23 55 views
0

對於rails而言,我是n00b。我正在嘗試在我的第一個rails3項目中創建單個多模式表單。詳情如下:使用多模表格在rails3中創建新對象

class Item < ActiveRecord::Base 
    # attr_accessible :title, :body 
    has_many :item_reviews, :dependent => :destroy 
    accepts_nested_attributes_for :item_reviews 
end 

class ItemReview < ActiveRecord::Base 
    # attr_accessible :title, :body 
    belongs_to :item 
end 

那麼清晰,一個項目可以有多個評論,但是當我創建一個項目,我想它至少1條點評。所以我希望獲得物品並在物品創建時以單一形式進行審覈。

我使用以下幾種觀點:

<%provide(:title,'Create')%> 
<h1> Add an Item review</h1> 

<div class="row"> 
    <div class="span6 offset3"> 
    <%= form_for (@item) do |f| %> 

     <%= f.label :name %> 
     <%= f.text_field :name %> 

     <% f.fields_for :item_reviews, @item.item_reviews do |ff| %> 
     <%= ff.label :shop_address %> 
     <%= ff.text_field :shop_address %> 
     <% end %> 

     <%= f.submit "Submit", class: "btn btn-large btn-primary" %> 

    <% end %> 

    </div> 
</div> 

<% f.fields_for :item_reviews, @item.item_reviews do |ff| %>將無法​​工作,因爲沒有item_review與@item目前(@item = Item.new),直到我保存@item,我不能創建新item_review相關。在這種情況下我應該怎麼做。

我知道一種可能性是與模型無關的形式,但我不能使用上面的東西來使生活變得輕鬆。

PS:我使用引導,以防萬一,如果有幫助。

回答

1

有一些方法可以實現項目評審的實例。最關鍵的是沒有實際的儲蓄來創建一些嵌套的情況下的一個實例

@item = Item.new 
@item.item_reviews.build 

,然後在表格

form_for @item do |f| 
... 
    f.fields_for :item_reviews do |ff| 

與此代碼的審覈實例存在並且可以渲染形式

+0

是啊!我同意審查的一個實例存在,但它仍然沒有渲染。 –

+0

得到它自己: - >因爲item_reviews是一個數組,這就是問題所在。使用http://stackoverflow.com/questions/8271940/form-for-non-ar-model-fields-for-array-attribute-doesnt-iterate中的建議修復了它 –

相關問題