0

我希望能够选择一个空白对象并将其发布,以便我可以清除导轨关系。默认情况下,当您在 :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,我应该使用其他东西吗?)

4

1 回答 1

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传递 ,但仍然想要标签,只需将nilor传递{}给第 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 } %>

我不能保证这行得通,因为我不知道 API 的select_f位置或者您是否自己创建了它。但是,这应该会推动您朝着正确的方向前进。

于 2012-10-26T21:23:31.337 回答