#javascript #ruby-on-rails
#javascript #ruby-on-rails
Вопрос:
Я включил динамический выпадающий список с текстовым полем, в котором, если я выберу no_of_years(periods)
, он автоматически отобразит interest_rate
, и возраст клиента рассчитывается в соответствии с date_of_birth
. Если возраст клиента больше 58 или 58, он не принимает значение внутри.
Мой код просмотра:
<script type="text/javascript">
function deposit(){
if(document.getElementById("no_of_year").value=="1") {
document.getElementById("interest_rate").value="9.5"
}
if(document.getElementById("no_of_year").value=="2") {
document.getElementById("interest_rate").value="10"
}
if(document.getElementById("no_of_year").value=="3") {
document.getElementById("interest_rate").value="10.5"
}
if(document.getElementById("no_of_year").value=="4") {
document.getElementById("interest_rate").value="11"
}
if(document.getElementById("no_of_year").value=="5") {
document.getElementById("interest_rate").value="11.5"
}
}
</script>
<h4><%= f.label :periods, class:'required' %></h4>
<select name="deposit[no_of_year]" id="no_of_year" onChange="deposit()">
<option value="">select</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<h4><%= f.label :interest_rate, class:'required' %>
<%= f.text_field :interest_rate, :id => "interest_rate", :value => "" %></h4>
Моя модель:
before_save :calculate_age
def calculate_age
self.age = ((DateTime.now - date_of_birth) / 365.25).to_i
end
Комментарии:
1. Есть ли у вас какое
validation
age
-либо поле set on в вашей модели?2. @Pavan: да, но я удалил проверку сейчас и снова столкнулся с той же проблемой
3. Вы перезапустили сервер после этого?
4. Можете ли вы опубликовать свой полный код модели (часть проверки)?
5. Вы уверены, что передаете
date_of_birth
значение своей модели?
Ответ №1:
Не уверен, что это то, что вы ищете. Могу ли я предложить некоторые jquery? Дайте мне знать, если это поможет.
<script type="text/javascript">
function deposit(){
var age = $("#no_of_year").val();
var interestRate = 9 (0.5*age);
$("#interest_rate").val(interestRate);
}
</script>
Комментарии:
1. он работает, но показывает ту же ошибку. я не знаю точно, где ошибка?
2. если возраст 58 лет и старше, приведенный выше код не работает. я удалил проверку.
3. Я подозреваю, что это может быть как-то связано с отрицательными значениями. Можете ли вы показать результат DateTime.now — date_of_birth?
4. @user3743250: self.age = ((DateTime.now — date_of_birth) / 365.25).to_i это даст расчет возраста. значение date_of_birth задается вручную.
5. Итак, я знаю формулу, но было бы неплохо как-то подтвердить результаты. Вы уверены ((Datetime.now — date_of_birth)/365.25).to_i = желаемый результат? Просто проверь это, и мы пойдем дальше, хорошо?