我需要将 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/