2012-04-12 62 views
0

我想通過使用泛型fields_for方法傳遞參數。我有一個表格:無對象使用通用fields_for

<%= form_for @Album do |album| %> 
... 
<%= fields_for :photo do |photo| %> 
    <%= photo.text_field :name %> 
    <%= photo.text_area :description %> 
    ... 
<% end %> 
<% end %> 

我希望這種形式會產生光[名]和照片[說明]這樣,當我提交表單,我的控制器可以做一個檢查,如果PARAMS [:照片]存在。 .. #做一點事。 我不使用嵌套窗體的原因是因爲有時這些窗體域甚至不會被使用。

問題是我得到的是fields_for:照片線的錯誤。它說你沒有料到它有一個零對象!你可能期望一個數組的實例。

我該如何做這個泛型fields_for而不是零?

回答

0

您遇到此問題是因爲您的控制器中沒有定義@photo變量。 fields_for,就像form_for一樣,旨在成爲現有對象的包裝。符號:photo正在變成一個實例變量,但它是零,所以這就是爲什麼你打這些錯誤。您可以通過在控制器動作定義照片糾正這一點,

@photo = @album.photos.first # if there's an existing photo 
@photo = @album.photos.new # if there's not 

如果你不想來定義所有的對象,那麼你就需要直接使用,而不是fields_for常規形式的標籤。

+0

謝謝,我可能會繼續使用常規的表單標籤,我用一個專輯和照片模型用我正在嘗試做的事情給了一些不好的例子。但是,這絕對清除了一切,非常感謝你! – yoshyosh 2012-04-12 16:38:14