рельсы разрабатывают проблему маршрутизации

Я новичок в рельсах, и это мое первое приложение. В настоящее время используется рельсы 3.2.11 и разрабатываем 2.2.3 для аутентификации.

Проблема заключается в том, что после входа в систему приложение возвращает 404 и говорит, что не удалось найти маршрут для «контроллера пользователя» и действия «показать».

У меня есть домашний контроллер для статических страниц и пользовательский контроллер для пользователя. Я создал модель User, используя команду rails generate. Мой config/routes.rb выглядит следующим образом.

devise_for :users
resources  :users
root :to => 'home#index'

Started POST "/users/sign_in" for 127.0.0.1 at 2013-01-29 15:44:25 +0530 Processing by Devise::SessionsController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"cHXjNbgzEx2YsHX/AMb1oxjStY75IVHc9wT40NUOdJM=", "user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"} User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1 (0.1ms) begin transaction (0.5ms) UPDATE "users" SET "last_sign_in_at" = '2013-01-29 10:06:46.145781', "current_sign_in_at" = '2013-01-29 10:14:26.063767', "sign_in_count" = 66, "updated_at" = '2013-01-29 10:14:26.067024' WHERE "users"."id" = 1 (188.0ms) commit transaction Completed 404 Not Found in 365ms

ActionController::RoutingError (No route matches {:action=>"show", :controller=>"users"}): app/controllers/application_controller.rb:5:in `after_sign_in_path_for'

И я изменил контроллер приложений, как показано ниже.

def after_sign_in_path_for(resource)
  user_url(resource)
end

То, что я пытаюсь сделать, это то, что как только пользователь войдет в систему, я хочу показать конкретную информацию о пользователе. Для этого я изменил after_sign_in_path_for (). Любые намеки на то, как я могу получить желаемые результаты?

Выход граней маршрутов ниже

        new_user_session GET    /users/sign_in(.:format)       devise/sessions#new
            user_session POST   /users/sign_in(.:format)       devise/sessions#create
    destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy
           user_password POST   /users/password(.:format)      devise/passwords#create
       new_user_password GET    /users/password/new(.:format)  devise/passwords#new
      edit_user_password GET    /users/password/edit(.:format) devise/passwords#edit
                         PUT    /users/password(.:format)      devise/passwords#update
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
                         PUT    /users(.:format)               devise/registrations#update
                         DELETE /users(.:format)               devise/registrations#destroy
                   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
0
nl ja de
Если я удалю after_sign_in_path_for (), я получаю 302 Перенаправлено по /home/sthustfo/.rvm/gems/[email protected]/gems/actionpa‌ ck-3.2.11/lib/action & zwnj; _controller/metal/re & zwnj; sponder.rb: 135: in `redirect_to '\ перенаправлено на 0.0.0.0:3000 Завершено 302 Найдено в 352ms (ActiveRecord: 0.0ms)
добавлено автор sthustfo, источник

3 ответы

You need on your application_controller.rb

 def after_sign_in_path_for(resource)
   user_url(current_user)
  end

Take a look at https://github.com/plataformatec/devise/wiki/How-to%3A-redirect-to-a-specific-page-on-successful-sign-in-and-sign-out

Просто попробуйте на чистую установку рельсов/разработайте и работайте правильно. Я думаю, что у вас должно быть некоторое перенаправление в users_controller.rb и, следовательно, не работает должным образом !. Удалите любой фильтр или перенаправьте его в своих контроллерах и проверьте этот код.

Выстрелить!

С уважением!

1
добавлено
Я отредактировал свой ответ, пожалуйста, прочитайте мое обновление ответа. Спасибо!
добавлено автор hyperrjas, источник
Рад помочь вам! пожалуйста!
добавлено автор hyperrjas, источник
Спасибо за ваше предложение. Однако с этим изменением я вижу рекурсивный запрос GET для/users/sign_in. Начато GET "/ users/sign_in" для 127.0.0.1 в 2013-01-29 17:28:54 +0530 Обработка по Devise :: SessionsController # new как HTML Пользовательская загрузка (35.7ms) SELECT "users". * FROM "пользователи «ГДЕ» пользователи ».« Id »= 1 LIMIT 1 Перенаправлено [email protected]/gems/devise-2.2.3/app/controllers/devi‌ se_controller.rb: 131 & zwnj;: in` require_no_authentication 'Перенаправлено в 0.0.0.0:3000/users/sign_in Цепочка фильтра остановлена ​​как: require_no_authentication rendered или перенаправлено Завершено 302 Найдено в 39 мс
добавлено автор sthustfo, источник
Спасибо, что исправил это. Мне также пришлось внести следующие изменения в routes.rb, чтобы исправить некоторые другие проблемы - ресурсы: пользователи, только: [: show,: index]
добавлено автор sthustfo, источник

You need on your application_controller.rb

 def after_sign_in_path_for(resource)
   user_url(current_user)
  end

Take a look at https://github.com/plataformatec/devise/wiki/How-to%3A-redirect-to-a-specific-page-on-successful-sign-in-and-sign-out

Просто попробуйте на чистую установку рельсов/разработайте и работайте правильно. Я думаю, что у вас должно быть некоторое перенаправление в users_controller.rb и, следовательно, не работает должным образом !. Удалите любой фильтр или перенаправьте его в своих контроллерах и проверьте этот код.

Выстрелить!

С уважением!

1
добавлено
Я отредактировал свой ответ, пожалуйста, прочитайте мое обновление ответа. Спасибо!
добавлено автор hyperrjas, источник
Рад помочь вам! пожалуйста!
добавлено автор hyperrjas, источник
Спасибо за ваше предложение. Однако с этим изменением я вижу рекурсивный запрос GET для/users/sign_in. Начато GET "/ users/sign_in" для 127.0.0.1 в 2013-01-29 17:28:54 +0530 Обработка по Devise :: SessionsController # new как HTML Пользовательская загрузка (35.7ms) SELECT "users". * FROM "пользователи «ГДЕ» пользователи ».« Id »= 1 LIMIT 1 Перенаправлено [email protected]/gems/devise-2.2.3/app/controllers/devi‌ se_controller.rb: 131 & zwnj;: in` require_no_authentication 'Перенаправлено в 0.0.0.0:3000/users/sign_in Цепочка фильтра остановлена ​​как: require_no_authentication rendered или перенаправлено Завершено 302 Найдено в 39 мс
добавлено автор sthustfo, источник
Спасибо, что исправил это. Мне также пришлось внести следующие изменения в routes.rb, чтобы исправить некоторые другие проблемы - ресурсы: пользователи, только: [: show,: index]
добавлено автор sthustfo, источник

You need on your application_controller.rb

 def after_sign_in_path_for(resource)
   user_url(current_user)
  end

Take a look at https://github.com/plataformatec/devise/wiki/How-to%3A-redirect-to-a-specific-page-on-successful-sign-in-and-sign-out

Просто попробуйте на чистую установку рельсов/разработайте и работайте правильно. Я думаю, что у вас должно быть некоторое перенаправление в users_controller.rb и, следовательно, не работает должным образом !. Удалите любой фильтр или перенаправьте его в своих контроллерах и проверьте этот код.

Выстрелить!

С уважением!

1
добавлено
Я отредактировал свой ответ, пожалуйста, прочитайте мое обновление ответа. Спасибо!
добавлено автор hyperrjas, источник
Рад помочь вам! пожалуйста!
добавлено автор hyperrjas, источник
Спасибо за ваше предложение. Однако с этим изменением я вижу рекурсивный запрос GET для/users/sign_in. Начато GET "/ users/sign_in" для 127.0.0.1 в 2013-01-29 17:28:54 +0530 Обработка по Devise :: SessionsController # new как HTML Пользовательская загрузка (35.7ms) SELECT "users". * FROM "пользователи «ГДЕ» пользователи ».« Id »= 1 LIMIT 1 Перенаправлено [email protected]/gems/devise-2.2.3/app/controllers/devi‌ se_controller.rb: 131 & zwnj;: in` require_no_authentication 'Перенаправлено в 0.0.0.0:3000/users/sign_in Цепочка фильтра остановлена ​​как: require_no_authentication rendered или перенаправлено Завершено 302 Найдено в 39 мс
добавлено автор sthustfo, источник
Спасибо, что исправил это. Мне также пришлось внести следующие изменения в routes.rb, чтобы исправить некоторые другие проблемы - ресурсы: пользователи, только: [: show,: index]
добавлено автор sthustfo, источник
pro.ruby
pro.ruby
1 181 участник(ов)

Язык программирования Ruby Additional docs: https://rubyreferences.github.io/rubyref/ Invite: https://telegram.me/joinchat/Be4rsT2NuB3CyJaF26j1kA Кто хочет компилировать: @crystal_ru (его синтаксис основан на Ruby) Участник @proDOT

Ruby, Rails, Hanami | dry-rb
Ruby, Rails, Hanami | dry-rb
1 180 участник(ов)

https://telegram.me/rubyjob - Ruby Job По вопросам - @eugene_shved

Ruby School .us
Ruby School .us
1 045 участник(ов)

Чат-болталка для учеников руби-школы и не только. Правила: https://telegra.ph/Pravila-chata-Rubi-shkoly-03-13

Random Ruby Chat
Random Ruby Chat
589 участник(ов)

Правила публикации вакансий: https://t.me/codenamecrud/60865

Rubyata
Rubyata
333 участник(ов)

Коммюнити Ruby и Ruby On Rails Флуд не приветствуются. Вакансии можно публиковать только и ТОЛЬКО по пятницам с хештегом #вакансия.

Ruby Talks
Ruby Talks
236 участник(ов)

Национальная Флеймотека

RubyRush
RubyRush
189 участник(ов)

rubyrush.ru программирование для самых новичков

Rails Chat
Rails Chat
87 участник(ов)

You are welcome to discuss Ruby On Rails development process and other stuff