Rails + Devise - регистрационный путь неверен после редактирования маршрутов по умолчанию - PullRequest
0 голосов
/ 06 декабря 2011

На моей странице редактирования профиля

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>

На моих маршрутах

  devise_for :users, 
    :controllers => { 
      :registrations => "registrations", 
      :sessions => "sessions", 
      :invitations => 'invitations' 
    },
    :path => '/',
    :path_names => {
        :sign_in  => 'login',
        :sign_out => 'logout',
        :sign_up => 'signup'
    }

  devise_scope :user do
    root :to => "registrations#new"
    get '/me/profile' => 'registrations#edit', :as => "myprofile"
    get "/me/invites" => 'invitations#new', :as => 'myinvites'
  end

маршруты рейка:

        new_user_session GET        /login(.:format)                                    {:action=>"new", :controller=>"sessions"}
            user_session POST       /login(.:format)                                    {:action=>"create", :controller=>"sessions"}
    destroy_user_session DELETE     /logout(.:format)                                   {:action=>"destroy", :controller=>"sessions"}
cancel_user_registration GET        /cancel(.:format)                                   {:action=>"cancel", :controller=>"registrations"}
       user_registration POST       /                                                   {:action=>"create", :controller=>"registrations"}
   new_user_registration GET        /signup(.:format)                                   {:action=>"new", :controller=>"registrations"}
  edit_user_registration GET        /edit(.:format)                                     {:action=>"edit", :controller=>"registrations"}
                         PUT        /                                                   {:action=>"update", :controller=>"registrations"}
                         DELETE     /                                                   {:action=>"destroy", :controller=>"registrations"}
                    root            /                                                   {:controller=>"registrations", :action=>"new"}
               myprofile GET        /me/profile(.:format)                               {:controller=>"registrations", :action=>"edit"}

Теперь моя страница редактирования профиля пользователя больше не работает, когда я включаю :path => '/'. При нажатии кнопки «Обновить профиль» не обновляется мой профиль пользователя.

Форма редактирования профиля пользователя теперь action = '/' (не работает) вместо ранее action = '/users' (работает)

Ответы [ 2 ]

0 голосов
/ 13 марта 2014

Настройка пользовательских маршрутов Devise частично описана на Devise Github Wiki .

Однако удаление отображения (в данном случае «пользователь») не совсем понятно.Описанное :path => '' также разбивает вещи.

Итак, если вы хотите: /sign_in вместо /users/sign_in, /register вместо /users/register и т. Д.

Что вы можетеdo:

Создание пользовательских контроллеров для сеансов и регистраций.В этих контроллерах установлено:

class Users::RegistrationsController < Devise::RegistrationsController

  prepend_before_filter :set_devise_mapping

private

  def set_devise_mapping
    request.env["devise.mapping"] ||= Devise.mappings[:user]
  end

end

(то же самое для Users::SessionsController < Devise::SessionsController)

Далее добавьте следующее в ваш route.rb:

  devise_for :users,
    :skip => [:sessions, :registrations],
    :controllers => {
      :omniauth_callbacks => 'users/omniauth_callbacks',
      :registrations => 'users/registrations',
      :passwords => 'users/passwords',
      :sessions => 'users/sessions'
    },
  # Setting empty path gives errors in registration_path.
  # So we overwrite them here.
  get 'sign_in' => 'users/sessions#new', :as => :new_user_session
  post 'sign_in' => 'users/sessions#create', :as => :user_session
  delete 'sign_out' => 'users/sessions#destroy', :as => :destroy_user_session
  get 'register' => 'users/registrations#new', :as => :new_user_registration
  post 'register' => 'users/registrations#create', :as => :user_registration

Чтобы также разрешить учетную записьредактируя, вы должны добавить свои собственные маршруты редактирования и обновления:

  namespace :users do
    resource :registration, only: [:edit, :update], path: ''
  end
0 голосов
/ 06 декабря 2011

Я верю, что

...,
:controllers => { 
      :registrations => "registrations", 
      :sessions => "sessions", 
      :invitations => 'invitations' 
    },
    :path => '/',
    :path_names => {
        :sign_in  => 'login',
        :sign_out => 'logout',
        :sign_up => 'signup'
    }

Не требуется. Вам нужно только devise_for :users как , указанное в файле README.rdoc

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

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