Ошибка маршрутизации - не найдено ни одного маршрута [POST] - PullRequest
0 голосов
/ 16 марта 2012

У меня есть следующий метод уничтожения в контроллере Tracks:

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]" / products / 74 / track / 43 "", когда я пытаюсь уничтожить трек продукта:

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

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

Вот мой route.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

Ответы [ 2 ]

2 голосов
/ 16 марта 2012

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

0 голосов
/ 16 марта 2012

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

...