簡體   English   中英

在Rails上提交表單紅寶石時如何更新表單字段的一部分

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM