質問編集履歴

1 modelのコードの追加

TOMSOYA

TOMSOYA score 17

2019/04/23 22:40  投稿

RubyonRails ユーザー新規登録の際にName can't be blankがでて登録ができません…
### 前提・実現したいこと
プログラミング練習として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  
 
```  
### 試したこと
試行錯誤したのですが上手くいきませんでした…
回答いただけると幸いです。
  • Ruby

    12085 questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    11827 questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る