【问题标题】:Generate form for array with hashes with formtastic使用 formtastic 为带有哈希的数组生成表单
【发布时间】:2011-07-31 19:13:20
【问题描述】:

我在使用 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,为此我需要一种方法来收集该数组的输入。我希望有 2 个字段(“url”和“description”)以某种方式映射到 urls 数组中。一旦可行,我希望用户能够一次添加多个 url,例如使用“添加新 url”按钮生成另外 2 个这些字段。

我已经尝试通过某些方式来实现这一点,例如:

#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

给出错误:

Hash:Class 的未定义方法“model_name”

我还尝试定义一个新的输入类型 :score_url 但我也没有走得太远,因为我需要一个包含 2 个字段的元组,而不是一个,而且我还没有找到一种方法来做到这一点。我查看了没有模型的表单,但我认为这也不是我需要的......

有人知道怎么做吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-10-07
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多