前提・実現したいこと
プログラミング練習としてTwitterのようなサービスを作っているのですが、ユーザーの新規登録ができないで悩んでいます。
発生している問題・エラーメッセージ
名前、メールアドレス、パスワードを入力して登録しようとすると全て入力しているにも関わらずName can't be blank、Email can't be blank、Password can't be blankがでて登録が完了しません。
該当のソースコード
#new.html.erb <div class="main users-new"> <div class="container"> <div class="form-heading">新規ユーザー登録</div> <div class="form users-form"> <div class="form-body"> <% @user.errors.full_messages.each do |message| %> <div class="form-error"> <%= message %> </div> <% end %> <%= form_with model: @user, local: true do |f| %> <div class="form-group"> <%= f.label :name, '名前' %> <%= f.text_field :name, class: 'form-control' %> </div> <div class="form-group"> <%= f.label :email, 'メールアドレス' %> <%= f.email_field :email, class: 'form-control' %> </div> <div class="form-group"> <%= f.label :password, 'パスワード' %> <%= f.password_field :password, class: 'form-control' %> </div> <div class="form-group"> <%= f.label :password_confirmation, 'パスワード(もう1度ご入力ください)' %> <%= f.password_field :password_confirmation, class: 'form-control' %> </div> <%= f.submit '登録する', class: 'btn btn-primary btn-block' %> <% end %> </div> </div> </div> </div>
#users_controller.rb def new @user = User.new end def create @user = User.new(user_params) if @user.save session[:user_id] = @user.id flash[:notice] = "ユーザー登録が完了しました" redirect_to("/users/#{@user.id}") else render("users/new") end end private def user_params params.require(:user).permit(:name, :email, :password,:password_confirmation) end
Rails.application.routes.draw do post "likes/:post_id/create" => "likes#create" post "likes/:post_id/destroy" => "likes#destroy" get "login" => "users#login_form" post "login" => "users#login" post "logout" => "users#logout" post "users/create" => "users#create" get "signup" => "users#new" get 'users/index' get "users/:id" => "users#show" get "users/:id/edit" => "users#edit" post "users/:id/update" => "users#update" get "users/:id/likes" => "users#likes" get 'posts/index' => "posts#index" get "posts/new" => "posts#new" get "posts/:id" => "posts#show" post "posts/create" => "posts#create" get "posts/:id/edit" => "posts#edit" post "posts/:id/update" => "posts#update" post "posts/:id/destroy" => "posts#destroy" get '/' => "home#top" get "about" => "home#about" resources :users, only: [:index, :show, :create, :edit, :update] resources :posts, only: [:index, :show, :create] do resources :comments, only: [:create] end end
#user.rb class User < ApplicationRecord has_secure_password mount_uploader :image, ImageUploader validates :name,{presence: true} validates :email,{presence: true, uniqueness: true} validates :password, presence: true, length: { minimum: 6 }, allow_nil: true validates :profile, length: { maximum: 160 } has_many :posts, dependent: :destroy has_many :comments, dependent: :destroy def posts return Post.where(user_id: self.id) end end
#post.rb class Post < ApplicationRecord mount_uploader :image, ImageUploader validates :content,{presence: true, length:{maximum:140}} validates :user_id,{presence: true} belongs_to :user has_many :comments, dependent: :destroy def user return User.find_by(id: self.user_id) end end
試したこと
試行錯誤したのですが上手くいきませんでした…
回答いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー