【问题标题】:rails collection_select wrong number of argument errorrails collection_select 错误数量的参数错误
【发布时间】:2014-05-28 11:25:19
【问题描述】:

我有一个 user_inputs 表,我在其中将设备订阅状态存储在 sub_status 列下,我希望这些订阅状态作为下拉选项在同名下。现在,从下拉列表中选择一个选项后,我想将状态的 ID 保存在 equipment_assets 表column_name subscription_status 下,并在浏览器上显示状态。 我正在为它尝试 collection_select 但它不起作用。

<div class="pluginESV_formfield">
<%= f.label :subscription_status %><br />
<%= collection_select  :sub_status,UserInput.all,:id, :subscription_status %></div>

这给出了错误,错误数量的参数,请帮助我。

这里-

  • :sub_status 是具有下拉选项的字段。
  • UserInput 是产生这些状态的模型。
  • :id 是 user_inputs 表中 sub_status 的索引
  • :subscription_status 是设备资产表中将存储选定 ID 的列。我不明白有什么问题 代码。

请帮帮我。

【问题讨论】:

  • 试试f.select :sub_status_id, options_for_select(UserInput.all.map{|ui| [ui.subscription_status, ui.id]})

标签: ruby-on-rails redmine-plugins collection-select


【解决方案1】:

对于带有字段subscription_status 的表equipment_assets,您需要更新collection_select 如下:

<%= collection_select :equipment_asset, :subscription_status, UserInput.all, :id, :sub_status %>

按照collection_select 语法,即,

collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})

您错过了object 参数,这就是您收到错误wrong number of arguments 的原因。它是一个强制参数,因为它有助于用正确的idname 形成select HTML 元素,以便在提交表单时,select 下拉列表的选定值将正确传递到参数哈希中。

【讨论】:

  • 嗨,感谢您的回复,但它仍然给出错误,使用 f.collection_select 它给出 -:Error (undefined method merge' for :subscription_status:Symbol) and without f. it gives Error (undefined method subscription_status' for #)
  • 对于f.collection_select,您不应该使用object,但对于collection_select,您必须提供object。在您的问题中,您提到了collection_select
  • 根据错误消息,您的字段名称是 sub_status 而不是 subscription_status 。因此,符号错误。请参阅我的更新答案。
  • 是的,那行得通,所以现在我可以看到下拉选项,但是我要保存所选状态的表有这个字段 subscription_status。等等提交选择的输入无处可去。
  • 你想从下拉列表中存储所选值的表名和字段名是什么?使用相关详细信息更新您的问题。
猜你喜欢
  • 2015-06-21
  • 2019-12-03
  • 2018-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多