2011-04-07 51 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希望能够调用每个项目。