2011-04-07 53 views
1

我與formtastic有困難。我會先嚐試儘可能地勾畫出情況。用formtastic生成哈希表的數組形式

我有一個名爲onlinescore的模型,它具有屬性publisher,id和其他一些基本類型。其中一個屬性是urls。這些urls與這樣的內容哈希:

{"url" => "http://www.example.com", "description" => "blabla"} 

所以數組是這樣的:

[{"url" => "http://www.example0.com", "description" => "blabla0"}, 
{"url" => "http://www.example1.com", "description" => "blabla1"}, 
{"url" => "http://www.example2.com", "description" => "blabla2"}] 

我現在做一個表單創建一個新的onlinescore爲此,我需要一種方法來收集該數組的輸入。我想有2個字段(「url」和「description」)以某種方式映射到urls數組。一旦這樣做,我希望用戶能夠一次添加多個網址,例如,使用「添加新網址」按鈕可以生成另外兩個這些字段。

我已經嘗試做到這一點的某些方面,例如像這樣:

#rest of form 
<% @onlinescore.url.each do |link| %> 
    <% form.inputs :for => link do |urls| %> 
    <%= urls.input :url, :as => :url %> 
    <%= urls.input :description, :as => :string %> 
    <% end %> 
<% end %> 
#rest of form 

這給錯誤:

undefined method `model_name' for Hash:Class

我也試圖定義一個新的輸入類型:score_url但我並沒有得到太多,因爲我需要一個2字段的元組,而不是一個,我還沒有找到一種方法來做到這一點。我查看了沒有模型的表單,但我並不認爲這是我需要的......

有沒有人有一個想法如何做到這一點?

回答

1

這裏的主要問題(以及'未定義方法'model_name'for Hash:Class'錯誤)的原因是你試圖創建一組字段的每個URL都是一個Hash,而不是ActiveRecord或ActiveModel模型。如果您可以將這些項目表示爲一組模型,而不是散列數組,我認爲您會沒事的。 Formtastic最適合模型。 Rails是一個相同的框架。哈希不會在這裏工作對不起,有太多的Formtastic和Rails希望能夠調用每個項目。