生成带有formtastic的哈希数组的表单

时间:2011-04-07 15:13:01

标签: ruby-on-rails arrays ruby-on-rails-3 hash formtastic

我在使用formtastic方面遇到了困难。我将首先尝试尽可能地勾画出情况。

我有一个名为onlinescore的模型,其中包含publisherid和其他一些基本属性。然而,它的一个属性是带有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,为此我需要一种方法来收集该数组的输入。我希望有两个字段(“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

给出错误:

  

未定义的方法`model_name'用于Hash:Class

我还试图定义一个新的输入类型:score_url但是我没有做到这一点,因为我需要一个2个字段的元组,而不是一个,我还没有找到办法。我在没有模型的情况下查看了表单,但我真的认为这不是我需要的......

有谁知道如何做到这一点?

1 个答案:

答案 0 :(得分:1)

这里的主要问题(以及'未定义方法`model_name'对于Hash:Class'错误的原因)是您尝试创建一组字段的每个url是Hash,而不是ActiveRecord或ActiveModel模型。如果你可以将这些项目表示为模型数组,而不是散列数组,我想你会没事的。 Formtastic最适合模特。 Rails是一个做同样的框架。哈希不会在这里工作抱歉,有太多的Formtastic和Rails希望能够调用每个项目。