2011-02-13 70 views
1

我使用Ajax调用在我的javascript:如何在route.rb中定义此路线?

var myUrl = "/cars/customer_cars"  
$.getJSON(
     myUrl, 
     {car_id: car_id, customer_id: customer_id}, 
     function(data) { 
      //Deal with response data 
     } 
); 

但从浏览器的角度来看,myUrl会像 “/汽车/ customer_cars car_id = 3 & CUSTOMER_ID = 6?” 一些东西,car_idcustomer_id值取决于用户在页面上的选择。这是两个变量。当发送这个Ajax请求,我想它来调用一个控制器功能,所以我需要在配置myUrl route.rb

(喜欢的东西

match /cars/customer_cars?car_id=?&customer_id=? , :to =>"cars#some_function"。我只是不知道语法这个配置。

所以,当请求被发送,CarsControllersome_function将被调用。

如何在route.rb中配置myUrl

回答

3

你甘简单地使用:

get "/cars/customer_cars" => "CarsController#some_function" 

变量将访问通过params[:car_id]params[:customer_id]

2

也许你应该考虑这样的路线:

resources :customers do 
    resources :cars do 
    member do 
     get :some_function 
    end 
    end 
end 

所以,你可以有一个像

link_to "customer car", some_function_customer_car_path(customer, car) 

链接这将转化为

/customers/:customer_id/cars/:id 

然后你不会需要在你的$ .getJSON中传递数据,只需要url,在你的控制器中,你可以得到params [:id]和param S [:CUSTOMER_ID]。

$("a").click(function(e) { 
    $.getJSON(
     $(this).attr("href"), 
     {}, 
     function(data) { 
     //Deal with response data 
     } 
    ); 
    e.preventDefault(); 
}) 

也许它没有回答你的问题,但你应该考虑一下。在我看来,在你的javascript中拥有这些网址并不好。

+0

好的建议,谢谢:) – Mellon 2011-02-14 07:29:28