Ruby on Rails - Разработать ссылку для регистрации не работает - неопределенный метод `user_registration_path ' - PullRequest
3 голосов
/ 19 марта 2012

Об этой проблеме ранее сообщалось, но я все еще не смог найти решение для нее.

Я установил плагин Devise для моего нового проекта RoR.Когда я нажимаю на ссылку регистрации, меня перенаправляют на следующий маршрут:

http://localhost:3000/users/registration/sign_up

Однако я получаю следующую ошибку:

undefined method `user_registration_path' for #<#<Class:0x007fd5d3503d58>:0x007fd5d3b0dcd0>

Извлеченоисточник (около строки # 5):

2:   <h1>Sign up</h1>
3: </div>
4: 
5: <%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
6:   <%= f.error_notification %>
7: 
8:   <div class="inputs">

Мои маршруты выдают следующее:

    new_user_session GET    /users/sign_in(.:format)              devise/sessions#new
        user_session POST   /users/sign_in(.:format)              devise/sessions#create
destroy_user_session GET    /users/sign_out(.:format)             devise/sessions#destroy
            password POST   /users/password(.:format)             devise/passwords#create {:name_prefix=>:user}
        new_password GET    /users/password/new(.:format)         devise/passwords#new {:name_prefix=>:user}
       edit_password GET    /users/password/edit(.:format)        devise/passwords#edit {:name_prefix=>:user}
                     PUT    /users/password(.:format)             devise/passwords#update {:name_prefix=>:user}
                     POST   /users/registration(.:format)         devise/registrations#create {:name_prefix=>"user_registration"}
                 new GET    /users/registration/sign_up(.:format) devise/registrations#new {:name_prefix=>"user_registration"}
                edit GET    /users/registration/edit(.:format)    devise/registrations#edit {:name_prefix=>"user_registration"}
                     PUT    /users/registration(.:format)         devise/registrations#update {:name_prefix=>"user_registration"}
                     DELETE /users/registration(.:format)         devise/registrations#destroy {:name_prefix=>"user_registration"}
          home_index GET    /home/index(.:format)                 home#index
               users GET    /users(.:format)                      users#index
                     POST   /users(.:format)                      users#create
            new_user GET    /users/new(.:format)                  users#new
           edit_user GET    /users/:id/edit(.:format)             users#edit
                user GET    /users/:id(.:format)                  users#show
                     PUT    /users/:id(.:format)                  users#update
                     DELETE /users/:id(.:format)                  users#destroy
                root        /                                     home#index

Мой мой файл route.rb имеет следующий код:

 devise_for :users

  get "home/index"

  resources :users
  root :to => "home#index"

Ответы [ 4 ]

12 голосов
/ 13 ноября 2013

У меня была эта проблема, и перезапуск сервера rails устранил ее для меня

1 голос
/ 19 марта 2012

ОБНОВЛЕНО: Я думаю, что вы должны указать «МЕТОД» как «ПОЧТА» формы.

5: <%= simple_form_for(resource, :as => resource_name, 
6:    :url => registration_path(resource_name), 
7:    :method => :POST) do |f| %>

================ (устарелый ответ ниже)

Я думаю, что у вас есть проблемы в вашем файле config / rout.rb. ожидаемый результат:

cancel_user_registration GET    /users/cancel(.:format)   devise/registrations#cancel
       user_registration POST   /users(.:format)          devise/registrations#create
   new_user_registration GET    /users/sign_up(.:format)  devise/registrations#new
  edit_user_registration GET    /users/edit(.:format)     devise/registrations#edit

, поэтому убедитесь, что ваш config / rout.rb имеет следующий код:

devise_for :users
0 голосов
/ 17 января 2013

Попробуйте, это может помочь: если вы упомянули какую-либо версию devise gem, удалите ее и оставьте в терминале только gem 'devise' и введите команду bundle update.

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

Эта проблема возникает, когда разработанная версия 1.1.0 RC и вы используете Rails 3.

Пожалуйста, посмотрите, как обновить ваш драгоценный камень для разработки:

https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0

Надеюсь, это поможет!

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