2014-10-20 3 views
0

Действие destroy работает для меня в одной части моего приложения, но я не могу заставить его работать в другом представлении, использующем отдельный контроллер.Нет совпадений маршрутов для действия destroy

Я получаю сообщение об ошибке: No route matches {:action=>"destroy", :controller=>"letsgo"}

Вид:

<% for letsgo in @letsgos %> 
<li> 
<b>Let's Go...<span class="content"><%= letsgo.content %></span></b> 
<%= link_to 'Delete', { :controller => 'letsgo', :action => 'destroy'}, 
         { :confirm => 'Are you sure?', :method => :delete, :remote => true} %> 
<% end %> 

Маршруты:

resources :letsgos, only: [:create, :destroy] 

LetsGos контроллер:

def destroy 
    @letsgo.destroy 
    redirect_to root_url 
    end 

Этот код работает, если я нахожусь под the letsgos view: <%= link_to "delete", letsgo, method: :delete, data: { confirm: "You sure?" }%>

Действие разрушения действует, если я работаю под видом letsgos, но я работаю в другой папке, и он больше не работает. То, что я делаю, перечисляет все content из таблицы letsgos и обеспечивает действие уничтожения для каждого контента.

Маршруты:

   letsgos_eatdrink GET  /letsgos/eatdrink(.:format)     letsgos#eatdrink 
      letsgos_listenwatch GET  /letsgos/listenwatch(.:format)    letsgos#listenwatch 
        letsgos_play GET  /letsgos/play(.:format)      letsgos#play 
        letsgos_other GET  /letsgos/other(.:format)      letsgos#other 
       letsgos_explore GET  /letsgos/explore(.:format)     letsgos#explore 
        repost_letsgo POST  /letsgos/:id/repost(.:format)     letsgos#repost 
       interested_letsgo POST  /letsgos/:id/interested(.:format)    letsgos#interested 
           GET  /letsgos(.:format)       letsgos#index 
           POST  /letsgos(.:format)       letsgos#create 
         new_letsgo GET  /letsgos/new(.:format)      letsgos#new 
        edit_letsgo GET  /letsgos/:id/edit(.:format)     letsgos#edit 
           GET  /letsgos/:id(.:format)      letsgos#show 
           PATCH /letsgos/:id(.:format)      letsgos#update 
           PUT  /letsgos/:id(.:format)      letsgos#update 
           DELETE /letsgos/:id(.:format)      letsgos#destroy 
+0

Что является результатом команды: '' 'rake routes''''? –

+0

Добавлены маршруты @TomHert – pwz2000

+0

Вам не нужно передавать идентификатор ': id' объекта' @ letgo', который вы хотите удалить, в строке 'link_to' delete? – Alireza

ответ

1

Вы не передавая идентификатор letsgo маршруту:

<%= link_to 'Delete', { :controller => 'letsgos', :action => 'destroy', :id => letsgo.id }, 
         { :confirm => 'Are you sure?', :method => :delete, :remote => true} %> 

Как написано в ваших путях:

letsgo DELETE /letsgos/:id(.:format)      letsgos#destroy 

Это не испытанной , но должно быть таким:

+0

Я реализовал 'letgo.id' перед публикацией здесь, и это дало мне ошибку маршрута, поэтому я удалил ее. Чтобы дать точную ошибку с добавлением, 'Нет маршрута соответствует {: action =>" destroy ",: controller =>" letsgo ",: id => 9}'. – pwz2000

+1

Таким образом, существует ошибка также в '' ': controller => 'letgos'''', см. Http://guides.rubyonrails.org/routing.html#static-segments –

0

ЭТО РАБОТАЕТ ДЛЯ меня тоже! Просто добавьте DATA: до { :confirm..... } ... и откроется диалоговое окно подтверждения удаления.

<%= link_to 'Delete', { :controller => 'letsgos', :action => 'destroy', :id => letsgo.id }, 
       data: { :confirm => 'Are you sure?', :method => :delete, :remote => true} %> 
Смежные вопросы