如何在Rails 3上简化我的路由

时间:2013-10-23 06:05:47

标签: ruby-on-rails routes

是否可以使以下代码更优雅?

我在购物车控制器中写了一些动作

  resources :carts do     
  end


  get "cart/search" => "carts#search"
  get "cart/search_book" => "carts#search_book"
  #search user
  get "cart/search_user" => "carts#search_user"
  get "cart/search_book_by_sn" => "carts#search_book_by_sn"
  get "cart/load_user" => "carts#load_user"

3 个答案:

答案 0 :(得分:3)

在路线上只使用搜索方法并使用参数不是更好。 这会使他们的路线更清洁。

例如

在模型上的方法:

def search(params)

end

在您的控制器中:

def index
   Model.search(params)
end

并在您的路线中:

resources :cart do
   collection do
       get :search
   end
end

希望这有帮助

答案 1 :(得分:2)

您可以使用路线收集

 resources :carts do          
   collection do 
     get :search
     get :search_book
     get :search_user
     get :search_book_by_sn
     get :load_user 
   end   
 end

它可能有不同的路线url

检查rake routes并使用生成的网址

了解更多信息routes guide

答案 2 :(得分:0)

你可以使用这样的东西

resources :cart do
  collection do
    get "search" => "carts#search"
    get "search_book" => "carts#search_book"
    get "search_user" => "carts#search_user"
    get "search_book_by_sn" => "carts#search_book_by_sn"
    get "load_user" => "carts#load_user"
  end
end

我认为,你期待这一点,但上面的代码将简化你的路线。