我有四个函数可以通过ajax调用传递几个参数。我用javascript构建了一个url的例子:
function submitMake(year,make){
new Ajax.Request('update_model/'+year+'/'+make, { method: 'get'});
}
在我的routes.rb中,我设置了四个不同的条目来接收发送到适当控制器的调用。这是一个:
match 'car_infos/update_style/:year/:make/:model', :controller => 'car_infos', :action => 'update_style'
一切正常,但我想知道这是否是合法的轨道3方式呢?如果不是,我应该如何修改我的路线以及正确的网址是什么样的?
感谢您的任何意见。
答案 0 :(得分:4)
没关系。
当使用js和ruby在边界上工作时,可用的语法糖量不多。
答案 1 :(得分:1)
有一种更灵活的解决方案,可以在js和rails之间共享URL。使用链轮,您可以通过ERB运行您的资产,然后您可以通过这种方式获取您的网址助手。
例如,您可以在变量中写出url,并将参数硬编码为可以在JS中替换的内容。这样您就可以更改自己的网址,而无需担心(尽可能多)关于更改应用中的网址。
例如your.js.erb:
<% class << self; include Rails.application.routes.url_helpers; end %>
var urls = {};
urls.make = <%= url_for(:only_path => true,
:controller => :car_infos, :action => :update_style,
:make => '%make', :year => '%year', :model => '%model').to_json %>;
// urls.make will be: 'car_infos/update_style/%year/%make/%model'
function submitMake(year, make, model) {
var path = urls.make.replace('%year', year).replace('%make', make).replace('%model', model);
new Ajax.Request(path, {method: 'get'});
}