您已经省略了传递给原始代码块的第 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
or传递{}
给第 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
位置或者您是否自己创建了它。但是,这应该会推动您朝着正确的方向前进。