Не найдено ни одного маршрута для уничтожения

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

Я получаю ошибку: 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

Этот код работает, если я нахожусь под letsgos Посмотреть: <%= 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

2 ответа

Решение

Вы не передаете удостоверение личности 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

Это не проверено, но должно быть так

Это работает и для меня! Просто добавь DATA: до { :confirm..... }... и диалог подтверждения удаления работает.

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