2017-06-28 210 views
0

在我on Rails項目紅寶石,我有一組滑塊的形式是這樣的:呼叫軌功能的onChange

<%= range_field(:subproject, :ans1, in: 0..100, id: 'slider1', :class => 'range range--light', :'data-init' => 'auto', :step => 1, :value => $project_value_1.to_i) %> 

滑塊的總價值應始終等於100 FO rthe形式可提交。否則,顯示錯誤消息。所有由該函數處理:

$sumOfProjectValues = $project_value_1.to_i + $project_value_2.to_i + $project_value_3.to_i + $project_value_4.to_i + $project_value_5.to_i 

      if $sumOfProjectValues == 100 
       message = 'Project can be saved' 
       btnStyle = 'confirmation' 
       hideDisabled = 'none' 
      else 
       message = 'Project quota must add up to 100% before saving' 
       btnStyle = 'alert' 
       hideEnabled = 'none' 
      end 

我想每次調用這個表單驗證功能的價值變動(有點像在JS的方法的onChange)。 我該怎麼做?

+0

你真的希望這Rails代碼內或內的JS(驗證語法類似於Ruby,但你在談論的onChange JS)發生的呢? – wiesion

+0

@wiesion我更喜歡鐵軌。儘管如此,Ruby沒有onChange方法。這將是理想的,這就是我提到它的原因。 – JustusP

+0

我認爲您需要仔細研究[ActiveRecord驗證](http://guides.rubyonrails.org/active_record_validations.html) - 您可以將您的100%檢查作爲驗證器來執行。如果它沒有通過,則該對象不能被保留,並且可以傳遞錯誤消息。 – wiesion

回答

0

try代碼:

$(".range").onChange(function(){ 
    var sumOfProjectValues = $project_value_1.to_i + $project_value_2.to_i + $project_value_3.to_i + $project_value_4.to_i + $project_value_5.to_i 

      if sumOfProjectValues == 100 
       alert('Project can be saved') 
      else 
       alert('Project quota must add up to 100% before saving') 
      end 
}) 
+0

不起作用。 (我修正了語法錯誤,但它什麼也沒做) – JustusP

+0

@JustusP嘗試'改變'而不是'onChange' – puneet18

+0

這不會改變任何東西。值是ruby變量。你不能在JS中調用它們。 – JustusP