我有一个普通的 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
tags.js.erb
$.get(tag_path("tagID").replace("tagID", tag_id)....
或者有更方便的方法吗?我只需要很少的 AJAX,所以我不想使用前端框架(Angular 等),只需 jQuery
编辑我的场景
用户通过自动完成搜索栏搜索给定的标签。此搜索栏将以某种方式返回 ID。
用户可以通过这种方式选择多个标签,它们的ID将存储在一个数组中。现在,单击按钮后,我想通过 AJAX 将查询发送到非 RESTful(以 ID 数组作为参数) Controller 操作。现在,我将专注于一次发送一项(因此仅发送一个 ID 字符串),因为这样更容易/更具 react 性。
此操作实际上会在我的模型中查找拥有此标签的项目和工程师,并返回带有格式化结果的 JSON。
最佳答案
是的,您可以使用*.js.erb
使用 Rails 助手。 Rails 提供了一些方便的助手来使用 Ajax。通常,对于 Rails,您可以通过使用标签 remote: true
来使用它们。 .
在你的情况下类似
<%= link_to 'Tags', tags_path(<tag.id>), remote: true %>
(大致),
了解有关将 Rails 助手与 Ajax 结合使用的更多信息 here ,和 this解释得很好。
更新
Rails 使用 CSRF token 来验证请求(GET 除外),因此如果您要使用纯 HTML/JavaScript,则需要将 token 添加到您的请求中。 Have a look at this post on the same .
我同意没有现成的方法可以做到这一点,但很少有 workarounds .
关于javascript - Rails API - AJAX 帮助程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31246240/