Railsのモデルのバリデーションでのエラーをrenderで表示するとURLが変わってしまうので、リロードした時にエラーが起きてしまいます
すみません、追記です。
URLが
/users/new
から
/users
になると言うことです。
なので、リロードすると
アクションがないとエラーが出ます。
これを綺麗に解決したいです。
ruby.
1Rails.application.routes.draw do 2 root "users#index" 3 resources :users, shallow: true do 4 resources :orders, only: [:index] do 5 collection do 6 get :select 7 get :manual_select 8 get :manual_new 9 post :manual_create 10 end 11 end 12 end 13 resources :sessions, only: [:new, :create, :destroy] 14end 15
slim
1.row 2 .col-xs-12.col-md-4 3 .col-xs-12.col-md-4 4 .panel.panel-default 5 .panel-heading 新規登録 6 .panel-body 7 = form_for @user do |f| 8 .form-group 9 = f.label "Email" 10 = f.email_field :email,class: "form-control", required: :required, placeholder: "Email" 11 = f.label "姓" 12 = f.text_field :family_name, required: :required,class: "form-control", placeholder: "姓" 13 = f.label "名" 14 = f.text_field :first_name, required: :required,class: "form-control", placeholder: "姓" 15 = f.label "パスワード" 16 = f.password_field :password, required: :required,class: "form-control", placeholder: "6文字以上" 17 = f.label "パスワード再入力" 18 = f.password_field :password_confirmation,class: "form-control", required: :required, placeholder: "6文字以上" 19 = f.submit "送信", class: "btn btn-primary btn-lg btn-block" 20 = link_to "ログイン", new_session_path, class: "btn btn-default btn-lg btn-block" 21 = link_to auth_at_provider_path(provider: :twitter), class: "btn btn-block btn-social btn-lg btn-twitter" 22 i.fa.fa-twitter 23 .sns-title = "Twitterログイン" 24 = link_to auth_at_provider_path(provider: :facebook), class: "btn btn-block btn-social btn-lg btn-facebook" 25 i.fa.fa-facebook 26 .sns-title = "Facebookログイン" 27
ruby.
1 def create 2 @user = User.new(user_params) 3 if @user.save 4 #成功した時 5 else 6 render "new" 7 end 8 end
具体的には上記のような場合です。
URLを変更せずにエラーメッセージを表示させるナイスな方法はありませんでしょうか?
redirectの場合だと綺麗にメッセージが渡せずに悩んでいます。
宜しくお願い致します
URLが変わってしまうというのは,/users/new から /users になるという意味でしょうか.加えて,リロードした時にエラーが起きるとありますが,どのようなエラーでしょうか.
ルーティングエラーとのことですが,POST /users によって UsersControler#create が実行され,そこでエラーが発生し render "new" した画面でリロードを押しても,再度 POST /users されるだけなので,ルーティングエラーが起こるということが考えられません.エラーが発生する手順やエラー詳細など記載してもらえますか
すみません、修正しました!
config/routes.rb と app/views/users/new.html.erb の内容の掲載は可能でしょうか.こちらで,質問内容に記載のものでサンプルプロジェクトを作成し動かしてみましたが,ブラウザのアドレス欄にあるURLが変わってしまっても,エラーが発生することなくリロードできております.
なん度もすみません。このようになっています。
こちらこそすみません.時間の都合により回答が夜になります.
わざわざ調べていただいてすみません。ありがとうございます!いつでも大丈夫です!
回答2件
あなたの回答
tips
プレビュー