Как проложить маршрут и удалить регистрацию устройства? - PullRequest
1 голос
/ 13 сентября 2011

Я использовал devise в качестве драгоценного камня аутентификации пользователя для моего веб-приложения rails.

Используя эту предварительно сгенерированную строку:

<p>Unhappy? <%= link_to "Cancel my account", registration_path(resource_name), :confirm => "Are you sure?", :method => :delete %>.</p>

Я хочу удалить профиль пользователя.

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

Я получаю следующее:

ActionController::RoutingError (No route matches "/users"):

Мой routes.rb имеет:

devise_for :users

Мой rake routes производит:

      new_user_session GET    /users/sign_in(.:format)            {:action=>"new", :controller=>"devise/sessions"}
          user_session POST   /users/sign_in(.:format)            {:action=>"create", :controller=>"devise/sessions"}
  destroy_user_session GET    /users/sign_out(.:format)           {:action=>"destroy", :controller=>"devise/sessions"}
         user_password POST   /users/password(.:format)           {:action=>"create", :controller=>"devise/passwords"}
     new_user_password GET    /users/password/new(.:format)       {:action=>"new", :controller=>"devise/passwords"}
    edit_user_password GET    /users/password/edit(.:format)      {:action=>"edit", :controller=>"devise/passwords"}
                       PUT    /users/password(.:format)           {:action=>"update", :controller=>"devise/passwords"}
     user_registration POST   /users(.:format)                    {:action=>"create", :controller=>"devise/registrations"}
 new_user_registration GET    /users/sign_up(.:format)            {:action=>"new", :controller=>"devise/registrations"}
edit_user_registration GET    /users/edit(.:format)               {:action=>"edit", :controller=>"devise/registrations"}
                       PUT    /users(.:format)                    {:action=>"update", :controller=>"devise/registrations"}
                       DELETE /users(.:format)                    {:action=>"destroy", :controller=>"devise/registrations"}
     user_confirmation POST   /users/confirmation(.:format)       {:action=>"create", :controller=>"devise/confirmations"}
 new_user_confirmation GET    /users/confirmation/new(.:format)   {:action=>"new", :controller=>"devise/confirmations"}
                       GET    /users/confirmation(.:format)       {:action=>"show", :controller=>"devise/confirmations"}

Чего мне здесь не хватает?

Ответы [ 3 ]

0 голосов
/ 06 сентября 2012

в rout.rb - сделайте это

devise_scope :user do
    get "delete_user", :to => "devise/registrations#destroy", :as => :edit_user_registration
end
0 голосов
/ 23 ноября 2015

Включить эту строку вways.rb:

devise_scope :user 
    delete "sign out" => "devise/session#destroy"
0 голосов
/ 13 сентября 2011

учитывайте тот факт, что в маршрутах у вас есть:

 DELETE /users(.:format) {:action=>"destroy", :controller=>"devise/registrations"}

Таким образом, запрос GET не будет считаться правильным маршрутом.Попробуйте что-то вроде:

<% form_for @user, :html => { :method => 'delete' } do |f| %>
    <%= submit_tag "destroy him" %>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...