• 締切済み

Rails deviseログイン画面について

deviseをインストールしました。 全ページに認証がかかるように、application_controller.rbの最後に以下を追記しました。 before_action :authenticate_user! すると、表示させたいログイン画面とは別のログイン画面があらわれたのですが、 なぜでしょうか? URLを見ると「http://localhost:3000/users/sign_in」になっています。 どなたか、詳しい方がいらっしゃいましたら、ご教授をお願いします。 【環境】 Ruby 2.2.2 Rails 4.0.13 CentOS6 devise 3.5.1 以上、宜しくお願いします。

  • Ruby
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

前回の高難易度質問からいきなり、初歩の質問に戻ってきた感じですね。 表示させたいログイン画面というのがどういうものなのか分からないところがありますが deviseは画面からコントローラーから、一通りのことをdevise内部で作ったもので面倒を見てくれるのが強みなので、その流れに一旦従いながら必要な箇所だけカスタマイズをかけていきましょう。 一応、「/users/sign_in」へのルーティングは 「config/routes.rb」の中に「devise_for :users」と書き足してあるかと思いますが ここで設定しています。 そこから呼ばれているアクションは「rake routes」コマンドを使って調べてみてください。 (正解はdevise/sessions#newアクションです) コントローラーとviewはdeviseのgemの中に既に存在しているので、これをカスタマイズしたい場合は、gemの内側から該当のファイルを自分のrailsプロジェクトへコピーしてからカスタマイズをかけて行ってください。 http://qiita.com/akasakas/items/138c29fa2cecd271cfe4

rapport5683
質問者

お礼

いつも、ありがとうございます。 迷走していまして、まずは、deviseを動かしてみる事に注力していきたいと思います。 ご回答、とても助かります。

関連するQ&A

  • Railsログイン認証について

    イントラネット上で使用する業務システムのログイン画面を作成しています。 調べてみると、device、sorcery等の認証プラグインが存在するようですが、 どれを使おうか思案中です。 Railsのログイン認証について、詳しい方がいらっしゃいましたら、 お勧めの認証プラグイン等がありましたら、ご教授ねがいます。 【開発環境】 Ruby 2.2.2 Rails 4.0.13 CentOS 6.6 Oracle 以上、宜しくお願いします。

    • ベストアンサー
    • Ruby
  • railsについて

    railsについて ruby on railsについて質問なんですが、 routes.rbってMVCとの対応で言えばどんな感じなんでしょうか? routesで指定したルートはコントローラとメソッドを指定していますが どの.html.erbを使うかの指定はどこでされてるんですか?

    • ベストアンサー
    • Ruby
  • railsでのデータベースエラー

    Ruby on rails を最近はじめました! MySQLをDBとしたところ、 Action Controllerでエラーが発生してしまいました! #28000Access denied for user 'root'@'localhost' (using password: NO) とはどういうことなのでしょうか?? アドバイスよろしくお願いします!! ※WindowsVista + MySQL + rails

  • Rails3でのルーティングの書き方

    Ruby1.9.3とRails3.2.9の環境でのルーティングではまってしまっているので、御経験のある方、御教示ください。現在、 config/routes.rbに Sample::Application.routes.draw do resources :users resources :tasks match '/users/login' match '/users/logout' match ':controller(/:action(/:id))' match ':controller(/:action(/:id))(.:format)' end を記述して、WEBrickを起動して、 http://localhost:3000/users/login/ を実行すると、このアドレスには移動するのですが、 NoMethodError in Users#show Showing C:/user/Ruby193/rails/sample/app/views/users/show.html.erb where line #5 raised: のエラーが出ます。 WEBrickの表示を見てみると、 Started GET "/users/login/" for 127.0.0.1 at 2013-01-22 22:56:06 +0900 Processing by UsersController#show as HTML Parameters: {"id"=>"login"} Rendered users/show.html.erb within layouts/users (2.0ms) Completed 500 Internal Server Error in 5ms となっていて、/users/login/をGETしているのですが、アクションでshowが呼び出されて、そのIDとして loginが渡っているように見えます。 現在、users\controller.rbのshowの関数の定義は全てコメントアウトしています。usersコントローラの def login関数の定義と、app/views/users/login.html.erbも置いているのですが、それらが表示されない状態で原因が分かりかねています。 上記のルーティングの書き方に何か問題があるのでしょうか?

    • ベストアンサー
    • Ruby
  • Ruby on Rails について

    Ruby on Railsでアプリケーションを作ります。 バージョンは:InstantRails-2.0-win 1、データベース表の作成: データベース名:myapp   テーブル名:peoples データベースを作成したら、MySQLを再起動します。 2、新規アプリケーションの作成: アプリケーション名:myapp Instant RailsウィンドウのIボタン⇒Rails Applications⇒Manage Rails Applicationsをクリックします。 Rails ApplicationsダイアログボックスのCreate New Rails App・・をクリックします。 コマンドプロンプト画面が表示されます。 rails myapp を入力します。 コマンドプロンプトのプロンプトが入力状態になって、コマンドプロンプトを閉じます。 Rails ApplicationsダイアログボックスのRefresh Listボタンをクリックしたら、myappアプリケーション名が追加されます。 3、アプリケーション・モデルの作成: InstantRails-2.0-winフォルダ ⇒ rails_apps ⇒ myapp ⇒ config ⇒ datebase.yml ファイルを開きます。 ↓に書き換えます。 development: adapter: mysql database: myapp timeout: 5000 username: root host: localhost   Instant RailsウィンドウのIボタン ⇒ Rails Applications ⇒ Open Ruby Console Windowをクリックします。 コマンドプロンプトが開きます。 cd myapp ruby script/generate model people を入力します。 4、コントローラの作成: コマンドプロンプトを開きます。 cd myapp ruby script/generate controller people を入力します。 コマンドプロンプトを閉じます。 InstantRails-2.0-winフォルダ ⇒ rails_apps ⇒ myapp ⇒ app ⇒ controllers ⇒ people_controller.rb ファイルを開きます。 class PeopleController<Application Controller scaffold :people ←←追加した行です。 end 5、新しいアプリケーションを起動 Rails ApplicationsダイアログボックスのRails Applications 欄の myappの所をチェックし、Start with Mongrelボタンをクリックします。 コマンドプロンプト画面が起動し、ポート番号が表示されます。 Webブラウザを起動し、アドレス欄に 一つは: 「http://localhost:people/list」を入力し、Enterキーを押します。 ↓Errorメッセージが表示されました。 NoMethodError in PeopleController#list undefined method `scaffold' for PeopleController:Class RAILS_ROOT: C:/taiyo/INSTAN~1.0-W/rails_apps/myapp   一つは: http://localhost:3000/people Enterキーを押します。 ↓Errorメッセージが表示されました。 NoMethodError in PeopleController#index undefined method `scaffold' for PeopleController:Class RAILS_ROOT: C:/taiyo/INSTAN~1.0-W/rails_apps/myapp どこの手順が違ってるのが解らなくて、 Errorの解決方法ですごく困ってます。 どうかご指導をお願いいたします。 もう一つはErrorメッセージの3行目は C:/taiyo/INSTAN~1.0-W/rails_apps/myappですけど、 InstantRails-2.0-winフォルダのはずですけど、 INSTAN~1.0-Wフォルダになった原因がよくわからないです。 すごく困ってます。 ご指導お願いいたします。

  • vagrant+railsで動作しない

    Windows7へVagrant+centOS+railsを入れてrailsの勉強をしようと思いましたが、 windows上のブラウザからrailsへ接続できません http://localhost:3000 → rails接続不可 ■調査状況 ・Vagrantfileのforwarded_portは3000→3000で設定済み ・centos内からwgetコマンドでrailsへの接続(#wget localhost:3000)を試みたところ、railsの起動画面が取得できたので、centos内では正しくrailsサーバが起動している ・切り分けとして、centos内でport3000でapacheを起動したところ、windowsからapacheへ接続できたために、windowsやcentos、vagrantの設定は問題ないと思われる なお、centos上でnetstatしたところ、apacheとrailsで表示に差分がありました。 これからrailsへ接続できない原因がわかるものでしょうか。 ■apacheをport3000で起動した時。Windowsからapacheへの接続可能 $ netstat -an |grep 3000 tcp 0 0 :::3000 :::* LISTEN tcp 0 0 :::3000 :::* LISTEN ■railsをデフォルト起動(port3000)した時。Windowsからrailsへ接続不可 $ netstat -an |grep 3000 tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN tcp 0 0 ::1:3000 :::* LISTEN

  • ruby on rails チュートリアル

    チュートリアルの3章を勉強中なのですが(http://railstutorial.jp/chapters/static_pages?version=4.2#sec-generated_static_pages) リスト3-4で $ rails generate controller StaticPages home help このコマンドをしてから$ rails server -b $IP -p $PORTを入力すると => Booting WEBrick => Rails 4.2.4 application starting in development on http://0.0.0.0:8080 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server [2015-11-11 09:39:15] INFO WEBrick 1.3.1 [2015-11-11 09:39:15] INFO ruby 2.2.1 (2015-02-26) [x86_64-linux] Exiting /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:206:in `bind': Address already in use - bind(2) for 0.0.0.0:8080 (Errno::EADDRINUSE) from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:206:in `listen' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:461:in `block in tcp_server_sockets' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:232:in `each' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:232:in `foreach' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:459:in `tcp_server_sockets' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/utils.rb:70:in `create_listeners' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/server.rb:133:in `listen' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/server.rb:114:in `initialize' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:45:in `initialize' from /usr/local/rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/handler/webrick.rb:31:in `new' from /usr/local/rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/handler/webrick.rb:31:in `run' from /usr/local/rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/server.rb:286:in `start' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/server.rb:80:in `start' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:80:in `block in server' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `tap' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `server' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:39:in `run_command!' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands.rb:17:in `<top (required)>' from /home/ubuntu/workspace/sample_app/bin/rails:8:in `require' from /home/ubuntu/workspace/sample_app/bin/rails:8:in `<top (required)>' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/client/rails.rb:27:in `load' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/client/rails.rb:27:in `call' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/client.rb:26:in `run' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/bin/spring:48:in `<top (required)>' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `load' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `<top (required)>' from /home/ubuntu/workspace/sample_app/bin/spring:13:in `require' from /home/ubuntu/workspace/sample_app/bin/spring:13:in `<top (required)>' from bin/rails:3:in `load' from bin/rails:3:in `<main>' となってしまいますがこれってエラーですよね? ビューも開けないのですが、どなたか教えていただきたいです もしかしたら上のコマンド関係ないのかもしれないです。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • ログイン済状態からの再ログインしたときの問題

    Ruby on Rails で ログイン認証でdevise を使用していますが、困った問題が起こっています。 未ログイン状態でログイン画面を別タブで2画面 開いていたとします。 まず片側の画面からあるIDでログインしたとします。 この状態で、もう片方の別タブの画面から別IDでログインすると、そのままログイン状態になるのですが、ログインIDが最初にログインしたIDにのままになっています。このシステムはある会社で使用されているのですが、その会社ではパソコンが複数人で使いまわされているため、ログアウトし忘れてセッションが切れる前に別の人がログインした場合、最初にログインした人のIDで操作ができてしまうことになり、非常にまずいのです。 Devise::SessionsController をカスタマイズすれば、対応できるかと思いましたが、そもそもログイン状態から再ログインした場合、処理が飛んでこないようです。ログイン状態で再ログインした場合、セッションを強制的に切断したいのですが、これをするためにはどのようにすればよいか、教えていただけると助かります。よろしくお願いします。

    • ベストアンサー
    • Ruby
  • Rails テストスクリプトの実行時にエラー

    Ruby on Railsのテストスクリプトの実行しようとするとエラーが発生します。 ------------------------------------------------------------------------------------------------- C:\Users\user\rails\sample>ruby bin/rake test test/models/sample_test.rb rake aborted! ActiveRecord::PendingMigrationError: Migrations are pending. To resolve this issue, run: bin/rake db:migrate RAILS_ENV=test C:/Users/user/rails/sample/test/test_helper.rb:3:in `<top (required)>' C:/Users/user/rails/sample/test/models/sample_test.rb:1:in `require' C:/Users/user/rails/sample/test/models/sample_test.rb:1:in `<top (required)>' Tasks: TOP => test:models (See full trace by running task with --trace) ------------------------------------------------------------------------------------------------- どのようにすればテストスクリプトを実行できるか教えていただけますでしょうか。

  • devise認証方法について

    Restful_authenticationをdeviseへ移行しようとしています。 既存のテーブルusersの2つのカラム(CRYPTED_PASSWORD、SALT)を使用して これまでと同様にSALTを使用してパスワードの暗号化を行いたいです。 具体的に、どのような対応をしてよいものか調査中です。 どなたか、詳しい方がいらっしゃいましたら、ご教授をお願いします。 【環境】 Ruby 2.2.2 Rails 4.0.13 CentOS6 devise 3.5.1 以上、宜しくお願いします。

専門家に質問してみよう