工夫カスタムルートとログインページ
-
26-09-2019 - |
質問
私は(Railsの3とルビー1.9.2)私のRailsアプリケーションでの作業カスタムルートを取得しようとしている。
これは私のconfig / routes.rbをファイルです。
match '/dashboard' => 'home#dashboard', :as => 'user_root'
devise_for :user do
get "/login", :to => "devise/sessions#new" # Add a custom sign in route for user sign in
get "/logout", :to => "devise/sessions#destroy" # Add a custom sing out route for user sign out
get "/register", :to => "devise/registrations#new" # Add a Custom Route for Registrations
end
しかし、上/ログインまたは/レジスタフォームを送信すると、ユーザー/ sign_inに行きます ユーザー/ sign_up。どのように私はこのようなことが起こらないでください。または、より良いユーザー/ sign_inなどのために、デフォルトですべての要求が工夫によって生成され、関連するルートではなく、デフォルトルートに行くことを確認してください。
また、どのように私は、任意のコントローラに含めるログインフォーム部分を作ることができますか?だから私は、ホームページ(ホーム#インデックス)にログインページを持つことができることではなく、ユーザー/ sign_inに?
私は、Mac OSX Snow Leopardの上で、Rubyの1.9.2上のRails 3で考案1.1.3を使用しています。
ありがとうございます。
解決
工夫1.1.3では、以下が動作するはずです。
devise_for :user, :path => '', :path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "register" }
は、作成したルートがあるため:path
パラメータが空の文字列であることの「/ユーザ/ ...」が付加されることはありません。 :pathnames
ハッシュは、あなたが好きなようにルートを命名するの世話をします。 /ログイン提出する内部ので、これらのルートを使用します考案は、あなたが望むように動作し、へ/ユーザー/ log_in
あなたのフロントページ工夫Wikiの情報がありますへのログインフォームを追加するには: ます。http: //github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-appする
それとも行うこのような何かます:
<%= form_tag new_user_session_path do %>
<%= text_field_tag 'user[email]' %>
<%= password_field_tag 'user[password]' %>
<%= submit_tag 'Login' %>
他のヒント
以下は私のために働いてます:
devise_for :users do
get "/login" => "devise/sessions#new"
get "/register" => "devise/registrations#new"
end
あなただけのdevise_forブロックにあなたの特別なルートを入れていない必要が
match '/dashboard' => 'home#dashboard', :as => 'user_root'
get "/login", :to => "devise/sessions#new" # Add a custom sign in route for user sign in
get "/logout", :to => "devise/sessions#destroy" # Add a custom sing out route for user sign out
get "/register", :to => "devise/registrations#new" # Add a Custom Route for Registrations
devise_for :user
今/ログイン作品。 /ユーザー/ sign_inすぎます。
コンフィグます:
devise_scope :user do
get 'profile/edit' => 'devise/registrations#edit', :as => :edit_user_registration
get 'profile/cancel' => 'devise/registrations#cancel', :as => :cancel_user_registration
end
devise_for :users,
:path => '',
:path_names => { :sign_in => 'login',
:sign_out => 'logout',
:sign_up => '',
:registration => 'register',
:edit => 'edit',
:cancel => 'cancel',
:confirmation => 'verification' }
ルートます:
edit_user_registration GET /profile/edit(.:format) devise/registrations#edit
cancel_user_registration GET /profile/cancel(.:format) devise/registrations#cancel
new_user_session GET /login(.:format) devise/sessions#new
user_session POST /login(.:format) devise/sessions#create
destroy_user_session DELETE /logout(.:format) devise/sessions#destroy
user_password POST /password(.:format) devise/passwords#create
new_user_password GET /password/new(.:format) devise/passwords#new
edit_user_password GET /password/edit(.:format) devise/passwords#edit
PATCH /password(.:format) devise/passwords#update
PUT /password(.:format) devise/passwords#update
GET /register/cancel(.:format) registrations#cancel
user_registration POST /register(.:format) registrations#create
new_user_registration GET /register(.:format) registrations#new
GET /register/edit(.:format) registrations#edit
PATCH /register(.:format) registrations#update
PUT /register(.:format) registrations#update
DELETE /register(.:format) registrations#destroy
私は私のコントローラ
に私自身の認証コントローラおよびルーティングされた工夫セッションコントローラを作成devise_for :users,
:controllers => {
:sessions => 'auth' },
:path => '/',
:path_names => {
:sign_in => 'login',
:sign_out => 'logout' }
このコードが追加されます/ログインおよび/ログアウトURLをます。
あなたがソースコード内で見つけることができるこのについての詳細は HTTP ://github.com/plataformatec/devise/blob/master/lib/devise/rails/routes.rbする
あなたのroutes.rbをファイルの先頭に使用この
map.connect "users/:action", :controller => 'users', :action => /[a-z]+/i
あなたのインデックスファイルがどこにこれを使用しています。それはユーザーモデル上にある場合は、上記または変更に応じて
を使用