我想在这个辅助方法中设置一个参数,但我不确定是否可以使用三元运算符或某些东西来设置某个条件的值。
<%= number_field_tag 'somearray[][somefield]', nil, {min: 0.000, step: 0.001, class: "form-control", :'aria-label' => "Quantity" ,onchange: "change_total(this)",value: 'VALUE SHOULD BE HERE'} %>
条件是这样的:
if params['somearray'].nil? != true
return params['somearray'].first["quantity"]
else
return nil
end
答案 0 :(得分:2)
number_field_tag
的第二个参数实际上是值,所以你当然可以用三元运算符(我根据nil
是假的)简化了它:
number_field_tag 'somearray[][somefield]', (params[:somearray] ? params[:somearray][0][:quantity] : nil), min: 0.000, step: 0.001, class: "form-control", :'aria-label' => "Quantity", onchange: "change_total(this)"
但是,复杂的内联视图操作最好重构为辅助文件。帮助程序文件在app / helpers目录中定义,并根据控制器命名:如果您有PagesController
,则需要将该方法添加到app / helpers / pages_helper.rb中的module PagesHelper
(请注意,即使不将其传入,也可以从帮助文件访问params
方法:
def somearray_value
params[:somearray] ? params[:somearray][0][:quantity] : nil
end
然后你可以在视图中调用它:
number_field_tag 'somearray[][somefield]', somearray_value, min: 0.000, step: 0.001, class: "form-control", :'aria-label' => "Quantity", onchange: "change_total(this)"
答案 1 :(得分:0)
您可以使用try:
<%= number_field_tag 'somearray[][somefield]', params[:somearray].try(:first).try(:fetch, :quantity), {min: 0.000, step: 0.001, class: "form-control", :'aria-label' => "Quantity" ,onchange: "change_total(this)" %>