我希望能够选择一个空白对象并将其发布,以便我可以清除轨道关系。默认情况下,当您在:include_blank条目上选择POST时,没有任何内容被发布,因此它不会删除旧关系。所以我试图在数组中添加一个0 id空白项。
原件:
<%= select_f f,:config_template_id, @operatingsystem.config_templates.where(:template_kind_id => f.object.template_kind_id), :id, :name, {:include_blank => true}, { :label => f.object.template_kind } %>
矿:
<%= select_f f,:config_template_id, @operatingsystem.config_templates.where(:template_kind_id => f.object.template_kind_id).collect { |c| [c.name, c.id]}.insert(0, ['', 0]) %>
虽然我得到了“错误的参数数量(3个为5)”错误但无法弄清楚我错过了什么。有什么指针吗? (我也无法在网络上的任何地方找到select_f,我认为谷歌忽略了_所以搜索是开放的方式...对于rails 3我应该使用其他东西吗?)
答案 0 :(得分:1)
您已经省略了传入原始代码块的第3,第4,第5和第6个参数。无论select_f
是什么,它至少需要5个参数。在原文中,您将以下内容传递给select_f
(为清晰起见,每行一个参数)
f,
:config_template_id,
@operatingsystem.config_templates.where(:template_kind_id => f.object.template_kind_id),
:id,
:name,
{:include_blank => true},
{ :label => f.object.template_kind }
在新的(已损坏)电话中,您只能传递
f,
:config_template_id,
@operatingsystem.config_templates.where(:template_kind_id => f.object.template_kind_id).collect { |c| [c.name, c.id]}.insert(0, ['', 0])
使用第一个方法调用,只需替换第三个参数。
f,
:config_template_id,
@operatingsystem.config_templates.where(:template_kind_id => f.object.template_kind_id).collect { |c| [c.name, c.id]}.insert(0, ['', 0])
:id,
:name,
{:include_blank => true},
{ :label => f.object.template_kind }
最后,如果您不希望传递:include_blank => true
,但仍然想要标签,只需将nil
或{}
传递给第5个参数
f,
:config_template_id,
@operatingsystem.config_templates.where(:template_kind_id => f.object.template_kind_id).collect { |c| [c.name, c.id]}.insert(0, ['', 0])
:id,
:name,
nil,
{ :label => f.object.template_kind }
完全在一条线上:
<%= select_f f, :config_template_id, @operatingsystem.config_templates.where(:template_kind_id => f.object.template_kind_id).collect { |c| [c.name, c.id]}.insert(0, ['', 0]), :id, :name, nil, { :label => f.object.template_kind } %>
我无法保证这一点有效,因为我不知道select_f
的API在哪里,或者您是自己创建的。但是,这应该使你朝着正确的方向前进。