【问题标题】:Wrong number of arguments (2 for 4) using simple_form checkboxes使用 simple_form 复选框的参数数量错误(2 比 4)
【发布时间】:2013-06-19 00:33:35
【问题描述】:

我对 simple_form 关于复选框集合的阅读感到有些困惑。也就是说,除了我的选择之外,我还期望什么。自述文件有:first, :last,但并没有真正解释这些词服务器的用途。

下面是我想要的两个不同的复选框集合。我还应该提到,每个复选框都与数据库中的一个布尔字段相关,它们的标签与列名相同。

<%= f.collection_check_boxes :options, [[false, 'App'], [false, 'DB'], [false, 'WCF']] %>
<%= f.collection_check_boxes :options, [[false, 'Com1'], [false, 'Com2'], [false, 'BofA']] %>

我忘了说,当我尝试加载此页面时遇到的错误是

wrong number of arguments (2 for 4)

【问题讨论】:

  • 它仍然没有解释 :first 和 :last 用作参数。我总是应该放在第一位和最后一位吗?这些可能会改变吗?自述文件似乎没有说
  • 我并不是说那个链接回答了你的问题。我只是为了方便回答者而发布它,以便他们可以快速找到您正在谈论的自述文件。

标签: ruby-on-rails forms checkbox simple-form


【解决方案1】:

这个错误仅仅意味着你的&lt;%= f.collection_checkboxes %&gt; 需要 2 个参数,但你给它 4 个参数。记住这一点以供将来参考,因为这个错误很容易犯。

就在下面这个例子中:

form_for @user do |f|
  f.collection_check_boxes(
    :options, [[true, 'Yes'] ,[false, 'No']], :first, :last
  ) do |b|
    b.label { b.check_box + b.text }
  end
end

rubydoc.info 网站声明如下:

也可以给出一个应该生成复选框+标签的块。用标签包裹复选框,例如上面:

所以根据我的理解,:first 和 :last 代表标签的原样。这样你就有两个复选框。那是true 或false,但是在该选项数组之外,您将提供类的这些实例的标签。所以让我们举这个例子。即为User 类的实例:first 和:last 提供标签。希望这可以澄清事情。链接如下:

Ruby Doc- SimpleForm collection_check_boxes

【讨论】:

  • 我知道我需要传递更多的东西。在读我时传递的另外两个参数是:first 和:last 但是我不知道这些对我或 simple_form 代表什么
  • @mhopkins321 刚刚更新了答案,这应该为您澄清事情:)
  • 我不认为 first 和 last 正在类 User 上被调用。它们在作为第二个参数传递的数组的每个子数组上被调用。 :first 是参数value_method:“应用于数组集合以获取值的方法”。而:last是参数label_method:“应用于数组集合获取标签的方法”。因此,例如,[true, 'Yes'].first 生成 true 作为值,[true, 'Yes'].last 生成 'Yes' 作为标签。
  • @RoryO'Kane 我的立场不正确。你是对的,所以这么说,并进一步分解这个例子。 :options 是方法。那么数组[[true, 'Yes'], [false, 'No']是集合,first是值方法,last是text_method。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
相关资源
最近更新 更多