2017-09-23 3 views
0

Gibt es einen besseren Weg, um Setup diese beiden Routen unter:Eine bessere Möglichkeit, Routen einzurichten? Die Schienen

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

Hier sind alle meine Routen:

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

Es scheint mir, Sie könnten versuchen, so etwas wie in [diese Antwort] (https://stackoverflow.com/a/24306086/6873497) zu implementieren . Ich denke, Ihr aktuelles Design könnte optimiert werden, um einfache CRUD-Aktionen zu verwenden. – matiss

+0

Danke @matiss! Mein Entwurf ist nach deinen Ratschlägen bereits erstellt :) Meine Frage ist im Grunde genommen, ist da was falsches wie meine aktuellen Routen eingestellt sind oder gibt es einen besseren Weg es zu tun? p.s Ich bin ein Anfänger – Kurta

Antwort

0

etwas Versuchen Sie, wie dieses

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

Diese Aktionen don gehören nicht wirklich zum Song Controller. Wenn Sie darüber nachdenken, wird für einen Song keine CRUD-Aktion ausgeführt (Sie erstellen, bearbeiten oder löschen keinen Song).

Ich würde ein Konzept namens Nested Resources (http://blog.8thcolor.com/en/2011/08/nested-resources-with-independent-views-in-ruby-on-rails/ - das ist ein tolles Intro) verwenden.

Grundsätzlich würde ich meine Routen strukturieren:

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

Danke Cionescu..aber meine Lieder # Favorit ist Lieder Controller, und zerstören ist in Favoriten Controller. Du sagst, ich schalte sie alle in den Favoriten-Controller und ordne dann meine Routen entsprechend deiner Struktur um? übrigens. Ich benutze Ajax, um Songs als Favoriten zu machen. Vielen Dank! – Kurta

+0

Ja, das ist mein Vorschlag. Ajax sollte kein Problem sein. Sie könnten auch Rails UJS verwenden, die gut mit den Routenhelfern zusammenarbeiten – cionescu

Verwandte Themen