前提・実現したいこと
「localhost:3000/users/sign_up」にアクセスし、
バリデーションエラーを発生させると、「localhost:3000/users」に遷移してしまう。
・「localhost:3000/users/sign_up」でバリデーションエラーのメッセージを表示させたい。
・「/users」では、レンダリング直後は「/users/sign_up」同様に新規登録画面が表示されているが、ページを更新すると、No route matches [GET] "/users" というエラーが発生する。
・rails6でdeviseを用いている。
・deviseのコントローラの設定はいじっていない
・editでも同様のエラーが発生する
発生している問題・エラーメッセージ
No route matches [GET] "/users" Rails.root: /Users/ Application Trace | Framework Trace | Full Trace Routes Routes match in priority from top to bottom
#routes.rb devise_for :users, :controllers => { :registrations => 'users/registrations', :sessions => 'users/sessions', :passwords => 'users/passwords' }
# new.html.erb <div class="container"> <div class="form"> <h2>新規登録</h2> <%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> <%= render "devise/shared/error_messages", resource: resource %> <div class="form-group"> <%= f.label :name %><strong>(15文字以内)</strong><br> <%= f.text_field :name, autofocus: true, placeholder: " 例)タロウ" %><br> </div> <div class="form-group"> <%= f.label :email %><br> <%= f.email_field :email, autofocus: true, autocomplete: "email", placeholder: " 例)abc@example.com" %><br> </div> <div class="form-group"> <%= f.label :password %> <% if @minimum_password_length %> <strong>(<%= @minimum_password_length %>文字以上)</strong><br> <% end %> <%= f.password_field :password, autocomplete: "new-password", placeholder: " 6文字以上の半角英数字" %><br> </div> <div class="form-group"> <%= f.label :password_confirmation %><br> <%= f.password_field :password_confirmation, autocomplete: "new-password", placeholder: " 確認のためもう一度入力" %><br> </div> <div class="form-group "> <%= f.submit "アカウントを作成する", class:"btn" %> </div> <% end %> <%= link_to 'ゲストログイン', users_guest_sign_in_path, method: :post %><br> <%= render "devise/shared/links" %> </div> </div>
試したこと
「/users」に対するroutesを設定し、「/users/sign_up」に遷移するよう設定したが、deviseのデフォルトの設定でエラーが発生した。
補足情報(FW/ツールのバージョンなど)
・バリデーションエラーを発生させる
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/22 05:05