2012-03-16 1 views
0

У меня есть следующий уничтожить метод в моем контроллере Tracks:маршрутизации Ошибка - Нет маршрута матчей [POST]

def destroy 
    if params[:product_id].present? 
    @product = Product.find(params[:product_id]) 
    @track = @product.tracks.find(params[:id]) 
    @track.destroy 
    redirect_to product_path(@product) 
    elsif params[:release_id].present?   
    @release = Release.find(params[:release_id]) 
    @track = @release.tracks.find(params[:id]) 
    @track.destroy 
    redirect_to release_path(@release) 
    end 
end 

Я могу уничтожить релиз трека с помощью:

<%= link_to 'Destroy', release_track_path(@release,track), :confirm => 'Are you sure?', :method => :delete %> 

Но я получаю маршрутизацией ошибка «нет маршрута матчей [POST]„/ продукты/74/дорожки/43“», когда я пытаюсь уничтожить трек продукта:

<%= link_to 'Destroy', product_track_path(@product,track), :confirm => 'Are you sure?', :method => :destroy %> 

Я принял взглянуть на мой файл маршрутов и думаю, что это, вероятно, проблема, но, попробовав несколько вещей, я в тупике! Может ли кто-нибудь помочь? Это сводит меня с ума. Я использую то же самое, если els на моем методе создания, и он отлично подходит для обоих треков Release Track и Product Track.

Вот мой routes.rb (я подозреваю, что это большой беспорядок!)

Dashboard::Application.routes.draw do 

get "home/index" 
root :to => "home#index" 
get "tracks/new" 
get "tracks/create" 
get "tracks/update" 
get "tracks/edit" 
get "tracks/destroy" 
get "tracks/show" 
get "tracks/index" 
get "help/index" 

resources :helps 
resources :roles 
resources :labels 
devise_for :users 
resources :users 

resources :releases do 
    resources :artists 
    resources :tracks 
    resources :products do 
    resources :tracks 
    resources :itunes_data 
     end 
end 

resources :itunes_data 

resources :tracks do 
    collection { post :sort } 
end 

resources :products do 
    resources :tracks 
    collection do 
    get 'schedulecsv' 
    get 'schedule' 
    get 'new_releases' 
    get 'active_lines' 
    get 'deleted_lines' 
    get 'gemsetup' 
    get 'amazonsetup' 
    get 'search' 
    end 
end 

resources :artists 
end 
+1

Похоже, вы используете ': method =>: delete' в своем методе Release, но': method =>: destroy' на треке. Это артефакт вашей отладки? – ScottJShea

+0

Ха! Теперь я чувствую себя глупо! Угадайте, что он просто берет другой набор глаз, иногда да! Большое спасибо, спасибо! – Raoot

+0

Нет проблем ... Я делаю это все время ... другое, что я делаю, это отладка, в то время как попытка несколько вещей, а затем опубликовать попытку отладки, делая вещи еще более запутанными. – ScottJShea

ответ

2

Вы, кажется, смешались: удалять и: уничтожить и второй линии. : метод ожидает HTTP-глагол, поэтому он должен быть: delete.

+0

Да, это было! – Raoot

0

Чтобы управлять контроллерами гораздо удобнее, вы должны действительно проверить ressource_controller. Он скрывает все стандартные материалы и позволяет сосредоточиться на материалах, которые вы хотите настроить.

 Смежные вопросы

  • Нет связанных вопросов^_^