[英]How to update part of the form field when submit form ruby on rails
我正在使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.