前提・実現したいこと
Ruby on railsで会員登録フォームを作りました。そこでsubmitボタンを押した際に会員登録に成功した場合はTOPページにリダイレクト、失敗したら再度登録フォームにrenderするという機能を実装中に以下の問題が発生しました。
実現したことは上記の通り「submitボタンを押した際に会員登録に成功した場合はTOPページにリダイレクト、失敗したら再度登録フォームにrenderするという機能を実装すること」です。
発生している問題
renderが機能せず、submitボタンを押すとTOPページにも登録フォームにも遷移せず登録フォームのform_forに設定したcreateアクションのビューに遷移してしまいます。
該当のソースコード
app/controllers/home_controller.rb
def create @user = User.new(user_params) if @user.save redirect_to("/") else render :new end end
app/views/new.html.erb
<% @user = User.new unless @user %> <%= form_for @user,:url => {controller: "home", action: "create" } do |f| %> <p>名前</p> <%= f.text_field :name %> <p>user_id</p> <%= f.text_field :user_id %> <p>メールアドレス</p> <p>*実在しないメールアドレスを記入した場合使える機能に制限が設けられる場合があります。</p> <%= f.email_field :email %> サイト作成者のメルマガに登録<%= f.radio_button :mailmagazin, "登録する", checked: true %>する<%= f.radio_button :mailmagazin, "登録しない" %>しない <p>パスワード</p> <%= f.text_field :password %> <br> <%= f.submit "新規登録!" %> <% end %>
routes.rb
Rails.application.routes.draw do get '/' => 'home#top' get 'sinki' => 'home#new' post 'kanryou' => 'home#create' get 'login' => 'home#login' get 'you' => 'home#you' post 'seikou' => 'home#seikou' get 'post' => 'post#top' post 'arigatou' => 'post#arigatou' get 'index' => 'video#index' get 'ionamata' => 'video#toukou' post 'yosi!' => 'video#create' get '/:id' => 'video#show' resources :show do resource :hosi end resources :show do member do resources :komento end end get 'kumentu' => 'video#kumentu' end
試したこと
下のやり方全てでrenderされませんでした。
render :new
render action: :new
render("new")
render("/sinki")
補足情報
Windows 10 home
Ruby on rails 5.2.4
ruby 2.6.6
PostgreSQL 12.2
テキストエディタ Atom
回答2件
あなたの回答
tips
プレビュー