私は認証システムを作っています。新しい登録ページは「/ signup」に設定されています。登録が無効である場合(ユーザー名はすでに取得済み、パスワードが短すぎます)、エラーを表示したいと思います。私はこのようにそれを行うと:Rails - paramsでカスタムパスにリダイレクトすることは可能ですか?
@user = User.create(user_params)
if @user.save
session[:user_id] = @user.id
redirect_to stories_path, notice: "Thanks for registration!"
else
render 'new'
end
それは動作しますが、それは代わりに「/サインアップ」の「/ユーザの中でレンダリングします。そして、代わりの
がレンダリング時に '新しい'
は私がredirect_to '/サインアップ'
それがリダイレクトを書きますが、エラーは表示されません。 '/ signup'にリダイレクトしてエラーを保存することは可能ですか?
user.rb:
class User < ActiveRecord::Base
has_secure_password
validates :username, presence: true, :uniqueness => { :case_sensitive => false }
validates :password, presence: true, :length => {minimum: 6}
end
users_controller.rb:
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.create(user_params)
if @user.save
session[:user_id] = @user.id
redirect_to stories_path, notice: "Thanks for registration!"
else
render 'new'
end
end
private
def user_params
params.require(:user).permit(:username, :password)
end
end
new.html.erb:
<h3>New registration</h3>
<%= simple_form_for @user do |f| %>
<div> <%= f.input :username %>
<%= f.error :username %></div>
<div><%= f.input :password %>
<%= f.error :password %></div>
<%= f.button :submit %>
<% end %>
とroutes.rbを:
Rails.application.routes.draw do
root 'stories#index'
resources :stories
resources :users
get 'signup' => 'users#new'
end