Ruby on rails 如何简化Rails 3上的路线

Ruby on rails 如何简化Rails 3上的路线,ruby-on-rails,routes,Ruby On Rails,Routes,是否有可能使以下代码更加优雅 我在cart controller中编写了一些操作 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/sear

是否有可能使以下代码更加优雅

我在cart controller中编写了一些操作

  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"

您可以对路由使用集合

 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
并使用生成的URL


有关更多信息,请使用路线收集

 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
并使用生成的URL


要了解更多信息,您可以使用以下内容

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

我不认为您期望这样,但上面的代码将简化您的路线。

您可以使用类似的方法

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

我不认为您期望这样,但上面的代码将简化您的路由。

在路由上只使用搜索方法并使用参数不是更好吗。 这将使他们的路线更干净

乙二醇

在模型上的方法中:

def search(params)

end
在控制器中:

def index
   Model.search(params)
end
在你的路线上:

resources :cart do
   collection do
       get :search
   end
end

希望这对您有所帮助

在路由上只使用搜索方法并使用参数不是更好吗。 这将使他们的路线更干净

乙二醇

在模型上的方法中:

def search(params)

end
在控制器中:

def index
   Model.search(params)
end
在你的路线上:

resources :cart do
   collection do
       get :search
   end
end

希望这有助于

使其更具可读性和简短,您可以使用逗号分隔的值。例如,
get:search、:search\u book、:search\u user、:search\u book\u by\u sn、:load\u user
。此外,您还可以通过在先前的get方法中添加
,on::collection
来删除
集合do..end
块。@ManojMonga:+1要使其更具可读性和简短性,您可以使用逗号分隔的值。例如,
get:search、:search\u book、:search\u user、:search\u book\u by\u sn、:load\u user
。此外,您还可以通过将::collection上的
,on::collection
附加到上一个get方法来删除
集合do..end
块。@ManojMonga:+1