我正在使用ruby on rails form helper。在创建的表单中,我有几个输入字段:web_update(boolean),value1(int),value2(int),value3(int)
<div style="margin-left:30px">
Load Value From Web Site
<%= f.check_box :load_web %>
</div>
<div class="control-group">
<%= f.label :value1, class: "control-label" %>
<div class="controls">
<%= f.text_field :value1, class: "input-large" %>
</div>
</div>
当我将load_web设置为true时,这意味着value1-value3字段和load_web列将更新为数据库。
但是,当我将load_web设置为false时,我只希望更新数据库中的load_web值,此表也将更新value1-value3字段,并将它们更新为0,而我希望它保持其原始值。
以下是将load_web设置为false并更新表单时得到的参数:
Parameters:
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"YwbqeRIjadhMlPIA9fjc0Nm66p1bcu786HhaukofykU=",
"project_id"=>"34",
"load_web"=>"0",
"value1"=>0.0,
"value2"=>0.0,
"value3"=>0.0},
"commit"=>"Submit",
"id"=>"9"}
如何根据当前load_web值从更新中删除value1-value3?还是有其他解决方法?
这是一种方法,您可以执行。您可以有2个强参数声明。
private
def load_web_set_params
params.permit(:load_web, :value1, :value2, :value3,..)
end
def load_web_unset_params
params.permit(:load_web,...) # don't put value1 to value3 here
end
现在,在控制器内部,在更新之前测试的值,load_web
并使用相应的方法进行更新。
case load_web_unset_params[:load_web]
when '0' then Model.update load_web_unset_params
when '1' then Model.update load_web_set_params
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句