javascript - 将柯里化(Currying)函数从 Rails 传递到 JavaScript

标签 javascript ruby-on-rails ruby ruby-on-rails-4

我需要将 URL 传递给 .js 文件。此 URL 由 Rails 生成,并且接受一个参数

#routes
get "my_super/:some_id" => "controller1#my_super",

#index.html.haml
:javascript
  var myUrlFunc = "#{my_super_url}"; //my_super_url(...) expects one argument

还有一个 .js 文件:

  $.ajax({
    url: myUrlFunc($("#active_user_id"));
  })
  //................

重点是我最初不知道 some_id 因为它是动态选择的,它是从下拉列表中选择的。所以我必须有一个函数 myUrlFunc,它接受一个参数并返回 URL 而不是 URL 本身。我认为这会起作用,但由于错误而没有起作用:

No route matches {:action=>"my_super", :controller=>"controller1"} missing required keys: [:some_id]

我该怎么办?

最佳答案

正如您所发现的,路由助手不会让您在缺少参数的情况下调用它。此外,ruby 不知道如何将 ruby​​ 方法序列化为 javascript 函数。

一个简单(如果不是特别优雅)的方法是将虚拟值传递给 my_super_url。那么你的函数将类似于

var myUrlFunc = function(id){
  var base = #{my_super_url("--DUMMY--")};
  return base.replace("--DUMMY--", id);
}

关于javascript - 将柯里化(Currying)函数从 Rails 传递到 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24338583/

相关文章:

ruby - 转储 JSON 对象的首选方法是什么? to_json、JSON.generate 还是 JSON.dump?

javascript - JavaScript 中的日期运算

javascript - Stripe Checkout 与 Rails 中的自定义集成

sql - 查询不返回 bool 列设置为 FALSE 的记录?

Ruby - 提取正则表达式捕获组的最佳方式?

javascript - Ruby 数组到 Javascript 数组

javascript - 在 Gulp 中使用命名约定时出错

javascript - 传递到 VisualizeJS 方法时更新变量 AngularJS

javascript - 在运行测试之前使用 sequelize 种子文件种子数据库

ruby-on-rails - 使用带有 Sammy.js 的单个模板( Handlebars 或 Mustache)的 Rails 客户端/服务器端渲染