Я только начал использовать Завещание и я сделал несколько: настройкиНастройка DEViSE регистрация маршруты редактирования/обновление и просмотры
- Я сгенерированные мнения и настроить свою точку зрение (Форма регистрации и т.д.)
- Я генерироваться контроллеров, так что я могу сделать некоторые изменения там
- Я индивидуальные маршруты, в основном, как за этот пост: http://iampedantic.com/post/41170460234/fully-customizing-devise-routes
Все прекрасно работает, кроме edit_user_registratio n (просмотр, в котором пользователи могут изменять свой адрес электронной почты и пароль или удалять свою учетную запись).
Это то, что я для регистрации в config/routes.rb
(части, не связанные с контроллером регистраций опущены):
devise_for :users, skip: [:registrations]
as :user do
# joining
get '/register' => 'users/registrations#new', as: 'new_user_registration'
post '/register' => 'users/registrations#create', as: 'user_registration'
scope '/user' do
# settings & cancellation
get '/cancel' => 'users/registrations#cancel', as: 'cancel_user_registration'
get '/settings' => 'users/registrations#edit', as: 'edit_user_registration'
patch '/settings' => 'users/registrations#update'
# account deletion
delete '' => 'users/registrations#destroy'
end
Я изменил put
к patch
, потому что я использую Rails 4 (это правильно?).
Это мой form_for тег в views/users/registrations/edit.html.erb
:
<%= form_for(resource, as: resource_name,
url: registration_path(resource_name),
html: { method: :patch }) do |f| %>
При попытке обновить настройки для пользователя с указанным выше кодом, я получаю внутреннюю ошибку сервера на 500. Отправка формы пытается загрузить /register
(моя страница регистрации), которая, безусловно, не правильная. (я думаю, что это суть проблемы, но я не понимаю, как это исправить, как я очень начинающий.)
При попытке обновить настройки для пользователя с оригинальным put
методом (вместо patch
), я получаю ту же проблему.
Мой веб-сервер разработки говорит:
ActionController::RoutingError (No route matches [PUT] "/register"):
Спасибо заранее.
EDIT: Добавлено rake routes
.
Prefix Verb URI Pattern Controller#Action
new_user_registration GET /register(.:format) users/registrations#new
user_registration POST /register(.:format) users/registrations#create
cancel_user_registration GET /user/cancel(.:format) users/registrations#cancel
edit_user_registration GET /user/settings(.:format) users/registrations#edit
settings PUT /user/settings(.:format) users/registrations#update
DELETE /user(.:format) users/registrations#destroy
EDIT 2: Это то, что rakes routes
выглядит, когда я удалить пользовательские маршруты и пусть регистрации ручки DEViSE вид и т.д .:
Prefix Verb URI Pattern Controller#Action
new_user_registration GET /users/sign_up(.:format) devise/registrations#new
user_registration POST /users(.:format) devise/registrations#create
cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
edit_user_registration GET /users/edit(.:format) devise/registrations#edit
PATCH /users(.:format) devise/registrations#update
PUT /users(.:format) devise/registrations#update
DELETE /users(.:format) devise/registrations#destroy
РАБОЧИЕ:
routes.rb:
get 'settings' => 'users/registrations#edit', as: 'edit_user_registration'
put 'settings/:id' => 'users/registrations#update', as: 'update_user_registration'
edit.html.erb:
<%= form_for(resource, as: resource_name,
url: update_user_registration_path(resource_name),
html: { method: :put }) do |f| %>
Пожалуйста, разместите вывод 'rake routes'. – Pavan
Ok @Pavan, см. Выше. –
Попробуйте изменить url как 'settings_path (resource_name)' – Pavan