前提・実現したいこと
ここに質問の内容を詳しく書いてください。
railsを勉強している初心者です。今回、簡単な本の感想投稿サイトにdeviseを用いて会員登録とログイン機能を実装しようと思ったのですが、deviseフォルダの記述を少し変更していたところ、urlを指定しても会員登録・ログイン画面の両方に移動できなくなってしまいました。
発生している問題・エラーメッセージ
urlにてusers/sign_inと入れても、deviseの会員登録・ログイン画面に移動できない。 以下ターミナルの出力です。 Started GET "/users/sign_in" for 60.109.149.57 at 2021-01-01 13:49:38 +0000 Processing by Devise::SessionsController#new as HTML User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 1], ["LIMIT", 1]] ↳ /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.4.4/lib/active_record/log_subscriber.rb:98 Redirected to https://c979cac1884b497081e37a555da4a517.vfs.cloud9.ap-northeast-1.amazonaws.com/ Filter chain halted as :require_no_authentication rendered or redirected Completed 302 Found in 16ms (ActiveRecord: 0.8ms)
該当のソースコード 変更した点
20210101103335_devise_create_users.rb 最後部あたり t.string :name追加 t.string :name t.timestamps null: false end
devise/rezistrations/new.html.erb 前半にname入力用フォーム追加 <h2>Sign up</h2> <%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> <%= render "devise/shared/error_messages", resource: resource %> <!-- 名前ログイン用 --> <div class="field"> <%= f.label :name %><br /> <%= f.text_field :name, autofocus: true, autocomplete: "name" %> </div> <div class="field"> <%= f.label :email %><br /> <%= f.email_field :email, autofocus: true, autocomplete: "email" %> </div> <div class="field"> <%= f.label :password %> <% if @minimum_password_length %> <em>(<%= @minimum_password_length %> characters minimum)</em> <% end %><br /> <%= f.password_field :password, autocomplete: "new-password" %> </div> <div class="field"> <%= f.label :password_confirmation %><br /> <%= f.password_field :password_confirmation, autocomplete: "new-password" %> </div> <div class="actions"> <%= f.submit "Sign up" %> </div> <% end %> <%= render "devise/shared/links" %>
controllers/application_controller class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? private def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up,keys:[:name]) end end
devise/sessions/new.html.erb <h2>Log in</h2> <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %> <div class="field"> <%= f.label :name %><br /> <%= f.text_field :name, autofocus: true, autocomplete: "name" %> </div> <div class="field"> <%= f.label :password %><br /> <%= f.password_field :password, autocomplete: "current-password" %> </div> <% if devise_mapping.rememberable? %> <div class="field"> <%= f.check_box :remember_me %> <%= f.label :remember_me %> </div> <% end %> <div class="actions"> <%= f.submit "Log in" %> </div> <% end %> <%= render "devise/shared/links" %>
config/initializerz/devise.rb config.authentication_keys = [:name]に変更 # frozen_string_literal: true # Assuming you have not yet modified this file, each configuration option below 中略 # session. If you need permissions, you should implement that in a before filter. # You can also supply a hash where the value is a boolean determining whether # or not authentication should be aborted when the value is not present. config.authentication_keys = [:name] # Configure parameters from the request object used for authentication. Each entry # given should be a request method and it will automatically be passed to the # find_for_authentication method and considered in your model lookup. For instance, 中略 # ==> Configuration for :registerable # When set to false, does not sign a user in automatically after their password is # changed. Defaults to true, so a user is signed in automatically after changing a password. # config.sign_in_after_change_password = true end
試したこと
config.web_console.whitelisted_ips = によるホワイトリストを追記してみたが変化なし
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。