2017-09-23 22 views
0

是否有建立一個更好的方法下面這兩條路線:建立路線的更好方法?導軌

post '/song:id/favorite', to: 'songs#favorite', as: :favorite 
    delete '/song:id/favorite', to: 'favorites#destroy', as: :destroy 

這裏都是我的路線:

Rails.application.routes.draw do 
    root "home#index" 
    get '/login', to: 'sessions#new' 
    post '/login', to: 'sessions#create' 
    delete '/logout', to: 'sessions#destroy' 

    post '/song:id/favorite', to: 'songs#favorite', as: :favorite 
    delete '/song:id/favorite', to: 'favorites#destroy', as: :destroy 

    namespace :admin do 
    resource :dashboard, only: [:show] 
    end 

    resources :users, only: [:new, :create] 
    resources :playlists 
    resources :genres 
    resources :albums 
    resources :artists 
    resources :playlist_songs 
    resources :favorites 
    resources :songs 

end 
+0

在我看來,你可以嘗試實現像在[這個答案](https://stackoverflow.com/a/24306086/6873497) 。我認爲你現在的設計可以調整爲使用簡單的CRUD操作。 – matiss

+0

謝謝@matiss!我的設計是根據你的建議創建的:)我的問題基本上是,有什麼問題,我的當前路線是如何設置的,還是有更好的方法來做到這一點? p.s我是菜鳥 – Kurta

回答

0

嘗試是這樣的

resources :songs do 
    member do 
    post 'favorite', to: 'songs#favorite', as: :favorite 
    delete 'favorite', to: 'favorites#destroy', as: :destroy 
    end 
end 
0

這些行動不要真的不屬於歌曲控制器。考慮一下,它不會爲歌曲做一個CRUD動作(你不會創建,編輯或刪除歌曲)。

我會使用一個叫做嵌套資源的概念(http://blog.8thcolor.com/en/2011/08/nested-resources-with-independent-views-in-ruby-on-rails/ - 這是一個很好的介紹)。

基本上,我會組織我的路線爲:

resources :songs do 
    resources :favourites, only: [:create, destroy] 
end 
+0

謝謝Cionescu ..但是我的歌曲最喜歡的是歌曲控制器,並且銷燬是在收藏夾控制器中。你是在說我把他們全部放在最愛的控制器中,然後根據你的結構重新排列我的路線?順便說一句。我用阿賈克斯把歌曲當作最愛。謝謝! – Kurta

+0

是的,這是我的建議。 Ajax應該不成問題。你也可以使用Rails的UJS,它可以很好地與路由助手一起工作 – cionescu