<%= form_for(@mymodel, remote: true, html: { id: 'match_form' }) do |f| %>
<!-- I need to check if @mymodel.match_id matches the value generated by a controller function -->
<%= f.submit 'Save', class: 'btn btn-primary', id: 'match_submit', style: "width:38px;padding:0px" %>
<%= button_tag 'Cancel', class: 'btn btn-secondary', id: 'match_cancel', style: "width:52px;padding:0px" %>
<% end%>
<script type='text/javascript'>
$(function() {
$(document).on("click", "#match_submit", function(event){
$.ajax('my_controller_method', {
type: 'GET',
dataType: 'script',
data: {
mid: $("#").val(), // how do I pass @mymodel.match_id here?
},
error: function(jqXHR, textStatus, errorThrown) {
return console.log("AJAX Error: " + textStatus);
}
});
});
</script>
У меня есть форма, как показано выше.
- Как передать @ mymodel.match_id в вызове ajax выше?
- В моей функции контроллера, Я хотел бы проверить, является ли переданный match_id определенным значением; если нет, я бы хотел отобразить модальное сообщение с сообщением об ошибке и просто кнопку
Ok
. Как мне этого добиться? <> a) Должен ли я вернуть правильное значение из функции контроллера и проверить то же самое в моем javascript коде выше и показать предупреждение javascript? <> <> i) Если да, то как я могу вернуть число из функции контроллера в мою вызывающую функцию JavaScript? или <> б) смогу ли я отрендерить bootstrap модал с помощью кнопки Ok
в самом контроллере?
ОБНОВЛЕНИЕ 1:
Я пытался это передать match_id
и id
от mymodel
до ajax вызова, но это не сработало:
$(document).on("click", "#match_submit", function(event){
alert ("match id changed!");
alert($("#match_form").data('id'));
alert($("#match_form").data('match_id'));
$.ajax('cpl_evaluate_match_id', {
type: 'GET',
dataType: 'script',
data: {
debit_id: $("#match_form").data('id'),
match_id: $("#match_form").data('match_id')
},
error: function(jqXHR, textStatus, errorThrown) {
return console.log("AJAX Error: " + textStatus);
}
});
});
Предупреждения для печати id
и match_id
печати undefined
в сообщениях предупреждения .
ОБНОВЛЕНИЕ 2:
Я пытался вернуть число из функции моего контроллера, но, похоже, это тоже не сработало:
def evaluate_match_id
puts params[:debit_id]
puts params[:match_id]
return 1
end
ход ставок выше вверх пусто
$(document).on("click", "#match_submit", function(event){
alert ("match id changed!");
alert($("#match_form").data('id'));
alert($("#match_form").data('match_id'));
$.ajax('cpl_evaluate_match_id', {
type: 'GET',
dataType: 'script',
data: {
debit_id: $("#match_form").data('id'),
match_id: $("#match_form").data('match_id')
},
success: function(result){
if(result){ // yes or no? 1 or 0, it's the return coming from your controller
alert('true');
alert(result);
}
else{
alert('error');
alert(result);
}
},
error: function(jqXHR, textStatus, errorThrown) {
return console.log("AJAX Error: " + textStatus);
}
});
});
Значение result
в блоке success:
в приведенном выше коде JavaScript выглядит как undefined
(моя функция контроллера вслепую возвращает число 1
, которым я был ожидая здесь значение result
). Таким образом, условие if(result)
не выполняется и вместо него вызывается блок else
.