javascript - 如何在 ajax 调用期间从 Rails 控制器方法返回值?
问题描述
<%= 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>
我有上面的 JavaScrpt 代码,它对 Rails 控制器方法进行 ajax 调用。
我想检查此 ajax 调用中传递的值是否与某个值匹配。如果没有,我想只显示一个Ok
按钮的模式错误消息。
我可以想到两种方法来实现这一点:
我可以从控制器方法返回正确的值(这需要通过运行 SQL 查询进行一些计算。这就是我在控制器方法中执行此操作的原因)并检查 JavaScript 中的相等性,如果不匹配则抛出 JavaScipt 警报。
问:为此,我想知道如何将一个数字从控制器函数(在 ajax 调用期间调用)返回给 JavaScript
我可以检查控制器本身内部的匹配,然后在控制器函数本身中呈现引导模式
问:为此,我想知道如何
Ok
在我的控制器函数中呈现引导模式(显示文本消息和仅一个按钮)。
解决方案
def my_controller_method
# assign your value here like,
@message = 'Error occured!'
end
制作一个js文件,
my_controller_method.js.erb
在这个js文件中,
$("#mymodaldiv").html("<%= j render(partial: 'my_partial_page',locals: {msg: @message}) %>");
在这里, mymodaldiv 是 div 的 id,您必须将其放入文件中,从那里发生 AJAX 调用,
<div id='mymodaldiv'></div>
my_partial_page 是您必须使用 msg 变量来构建页面的部分名称。作为,
_my_partial_page.html.erb
_my_partial_page.html.erb 文件中的代码如下所示,
<h1><%= msg %></h1>
推荐阅读
- python - 使用 url 循环列表时出现 TimeoutException
- python - 线性回归 (OLS):使用 Statsmodel summary_Frame() 未准确计算置信区间
- mysql - 尝试多次查询时“无法获取连接”
- spring-boot - 如何在 Spring Boot 应用程序中安装 Spring Web Flow 和 Java servlet faces 2?
- python-3.6 - ros2 rclpy.spin_once() 在线程中产生“生成已经执行”异常
- openlayers - OpenLayers - 如何将自定义切片图层投影到 [-200,-200,200, 200] 的视图?
- splunk - Splunk Rex:将字符串的字段提取为值
- ios - Ionic 4 IOS Socket.io 如何动态获取配置
- javascript - 如何使用 clearTimeout 停止嵌套的 setTimeout?
- ide - Lazarus - 如何创建自己的 $(CustomRelativeUnitPath)