javascript - Rails API - AJAX 帮助程序

标签 javascript jquery ruby-on-rails ajax view-helpers

我有一个普通的 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/

相关文章:

javascript - 如何分离字符串并推送到 react 状态?

javascript - (Bootstrap/JQuery) 如何选择 .'col-md-4' 父级中的每个 '.row' 元素?

jquery - MVC 登录弹出窗口而不是重定向登录

ruby-on-rails - Rails - 如何创建链接到另一个模型的两个模型

javascript - jQuery 在 AJAX 插入的 DOM 元素上失败

Javascript 命令仅在未最小化时执行

javascript - 你如何使用 HTML/JS 在 chrome 中打开一个新选项卡?

javascript - jQuery - 事件无法正常工作

ruby-on-rails - Rails 与非 Rails 数据库设计

mysql - 在 Rails 中使用带有西类牙语数据库的英语模型