実現したいこと
railsでdeviseを実装後sign_inとsign_upでroot_pathに遷移したいのですが上手くいきません。
ここに実現したいことを箇条書きで書いてください。
railsのdeviseでメールアドレス、名前、パスワードを入力後rootのpathに移動させたいです。
ここに質問の内容を詳しく書いてください。
railsでdeviseをinstall後に各種設定(devise:views等)をした後 devise:User modelを作成してマイグレーション指定のhtml.erbからsign_upボタンを押すとroot_path(名前: home)に遷移するようにしたいのですが
できません。
一応sign_upで名前やメールアドレス、パスワードを入力してボタンを押すとURLに/usersと返って
元の入力画面に戻されてしまいます。
usersのコントローラーやviewも必要なのかなと思いましたが既に作られているhome#homeが
ルートになっているためこのhomeにサインインした後に遷移できるようにしたいです。
■■な機能を実装中に以下のエラーメッセージが発生しました。
sign_upした後ターミナルログを確認するとrollback transactionが出ていますがどういう意味かも分かりません。
Parameters: {"authenticity_token"=>"[FILTERED]", "user"=>{"name"=>"hira", "email"=>"kk@hhhhhh.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign Up"}
Unpermitted parameter: :name. Context: { controller: Devise::RegistrationsController, action: create, request: #ActionDispatch::Request:0x000000010fdaf830, params: {"authenticity_token"=>"[FILTERED]", "user"=>{"name"=>"hira", "email"=>"kk@hhhhhh.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign Up", "controller"=>"devise/registrations", "action"=>"create"} }
TRANSACTION (0.1ms) begin transaction
User Exists? (9.8ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = ? LIMIT ? [["email", "kk@hhhhhh.com"], ["LIMIT", 1]]
TRANSACTION (0.1ms) rollback transaction
該当のソースコード
route.rb内
Rails.application.routes.draw do
devise_for :users
root :to => 'home#home'
resources :daily_workouts, only: %i[new create]
get "up" => "rails/health#show", as: :rails_health_check
end
_nav.html.erb(ここにlink toでsign_inとsign_upにリンクできるよう記述)
seasons/new.html.erb
Sign In<div class="mb-6"> <%= f.label :email, class: "mb-2 block text-sm text-gray-600" %> <%= f.email_field :email, class: "w-full rounded-md border border-gray-300 py-2 px-3 placeholder:text-gray-300 focus:border-indigo-300 focus:outline-none focus:ring focus:ring-indigo-100" %> </div> <div class="mb-6"> <%= f.label :password, class: "mb-2 block text-sm text-gray-600" %> <%= f.password_field :password, class: "w-full rounded-md border border-gray-300 py-2 px-3 placeholder:text-gray-300 focus:border-indigo-300 focus:outline-none focus:ring focus:ring-indigo-100" %> </div> <%= f.submit 'Sign In', class: "inline-flex w-full items-center justify-center rounded-md bg-indigo-500 p-3 text-white duration-100 ease-in-out hover:bg-indigo-600 focus:outline-none cursor-pointer" %>
<% end %>
______________________________________resistretion/new.html.erb
Sign Up<div class="mb-6"> <%= f.label :name, class: "mb-2 block text-sm text-gray-600" %> <%= f.text_field :name, class: "w-full rounded-md border border-gray-300 py-2 px-3 placeholder:text-gray-300 focus:border-indigo-300 focus:outline-none focus:ring focus:ring-indigo-100" %> </div> <div class="mb-6"> <%= f.label :email, class: "mb-2 block text-sm text-gray-600" %> <%= f.email_field :email, class: "w-full rounded-md border border-gray-300 py-2 px-3 placeholder:text-gray-300 focus:border-indigo-300 focus:outline-none focus:ring focus:ring-indigo-100" %> </div> <div class="mb-6"> <%= f.label :password, "password", class: "mb-2 block text-sm text-gray-600" %> <%= f.password_field :password, class: "w-full rounded-md border border-gray-300 py-2 px-3 placeholder:text-gray-300 focus:border-indigo-300 focus:outline-none focus:ring focus:ring-indigo-100" %> </div> <div class="mb-6"> <%= f.label :password_confirmation, class: "mb-2 block text-sm text-gray-600" %> <%= f.password_field :password_confirmation, class: "w-full rounded-md border border-gray-300 py-2 px-3 placeholder:text-gray-300 focus:border-indigo-300 focus:outline-none focus:ring focus:ring-indigo-100" %> </div> <%= f.submit 'Sign Up', class: "inline-flex w-full items-center justify-center rounded-md bg-indigo-500 p-3 text-white duration-100 ease-in-out hover:bg-indigo-600 focus:outline-none cursor-pointer" %>
<% end %>
ソースコード
試したこと
application_controller.rbに遷移先を以下のように定義してもRouting.errorと返されたり字の間違いかもチェクしましたがそれも違うようです。
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected def after_sign_in_path_for(resource) root_path(current_user) **ここに指定のルート先を記述 end def after_sign_up_path_for(resource) root_path(current_user) *ここに指定のルート先を記述 end def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:username]) end
end
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
0 コメント