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