Rails API - AJAX 的帮手
Rails API - helpers for AJAX
我有一个普通的 rails 应用程序网站,但在某些页面上我需要使用 AJAX。
我已经有一些使用 jQuery 的工作 AJAX Javascript 代码,但到目前为止我还没有使用任何 rails 助手来做到这一点,编写相应的字符串手动到路径。
但是 javascript 有更方便的方法吗?假设我有一个 javascript 函数,它接受一个 ID 作为参数,并且必须调用一个 AJAX 动作。到目前为止我一直这样做
var url = "/tags/tagID"
function getTag(tag_id){
$.get(url.replace("tagID", tag_id) +'.json')
.fail(function(data){
alert('Oops error !');
})
.success(function( data ) {blabla ] )
}
是否可以将 .js 重命名为 .js.erb 并使用路径助手?所以我可以摆脱这个 url 变量并写
routes.rb
resources :tags
标签。js.erb
$.get(tag_path("tagID").replace("tagID", tag_id)....
或者有更方便的方法吗?我只需要很少的AJAX,所以我不想使用前端框架(Angular等),只是jQuery
编辑 我的场景
由于自动完成搜索栏,用户搜索给定标签。这个搜索栏会以某种方式 return ID。
用户可以通过这种方式select多个标签,它们的ID将存储在一个数组中。现在,单击按钮后,我想通过 AJAX 向非 RESTful(以 ID 数组作为参数)控制器操作发送查询。现在我将专注于一次发送一个项目(所以只有一个 ID 字符串),因为它是 easier/more 反应性的。
此操作实际上是在我的模型中查找具有此标签的项目和工程师,以及 return JSON 和格式化的结果。
是的,您可以使用 *.js.erb
来使用 Rails 助手。 Rails 提供了一些方便的助手来与 Ajax 一起工作。通常使用 rails,您可以通过使用标签 remote: true
.
来使用它们
你的情况类似于
<%= link_to 'Tags', tags_path(<tag.id>), remote: true %>
(大致),
阅读更多关于将 Rails 助手与 Ajax here, and this 结合使用的信息,解释得很好。
更新
Rails 正在使用 CSRF 令牌来验证请求(GET 除外),因此如果您打算使用纯 HTML/JavaScript,则需要将令牌添加到您的请求中。 Have a look at this post on the same.
我同意没有开箱即用的方法,但很少有 workarounds。
我有一个普通的 rails 应用程序网站,但在某些页面上我需要使用 AJAX。
我已经有一些使用 jQuery 的工作 AJAX Javascript 代码,但到目前为止我还没有使用任何 rails 助手来做到这一点,编写相应的字符串手动到路径。
但是 javascript 有更方便的方法吗?假设我有一个 javascript 函数,它接受一个 ID 作为参数,并且必须调用一个 AJAX 动作。到目前为止我一直这样做
var url = "/tags/tagID"
function getTag(tag_id){
$.get(url.replace("tagID", tag_id) +'.json')
.fail(function(data){
alert('Oops error !');
})
.success(function( data ) {blabla ] )
}
是否可以将 .js 重命名为 .js.erb 并使用路径助手?所以我可以摆脱这个 url 变量并写
routes.rb
resources :tags
标签。js.erb
$.get(tag_path("tagID").replace("tagID", tag_id)....
或者有更方便的方法吗?我只需要很少的AJAX,所以我不想使用前端框架(Angular等),只是jQuery
编辑 我的场景
由于自动完成搜索栏,用户搜索给定标签。这个搜索栏会以某种方式 return ID。
用户可以通过这种方式select多个标签,它们的ID将存储在一个数组中。现在,单击按钮后,我想通过 AJAX 向非 RESTful(以 ID 数组作为参数)控制器操作发送查询。现在我将专注于一次发送一个项目(所以只有一个 ID 字符串),因为它是 easier/more 反应性的。
此操作实际上是在我的模型中查找具有此标签的项目和工程师,以及 return JSON 和格式化的结果。
是的,您可以使用 *.js.erb
来使用 Rails 助手。 Rails 提供了一些方便的助手来与 Ajax 一起工作。通常使用 rails,您可以通过使用标签 remote: true
.
你的情况类似于
<%= link_to 'Tags', tags_path(<tag.id>), remote: true %>
(大致),
阅读更多关于将 Rails 助手与 Ajax here, and this 结合使用的信息,解释得很好。
更新
Rails 正在使用 CSRF 令牌来验证请求(GET 除外),因此如果您打算使用纯 HTML/JavaScript,则需要将令牌添加到您的请求中。 Have a look at this post on the same.
我同意没有开箱即用的方法,但很少有 workarounds。