現在Ruby on Railsでアプリケーションを作成しています。<% form_for ~ でエラーが出てしまい詰まっている状況です。
エラー内容
ArgumentError in Users#show First argument in form cannot contain nil or be empty
エラー箇所
<div class="offset-lg-2 col-lg-4 text-center profile-image mb-3"> <%= form_for(@user) do |f| %> <% if @user.image? %> <%= image_tag @user.image.thumb.url, class: "round-img" %> <% else %>
コントローラー
class UsersController < ApplicationController def show @user = User.find_by(id: params[:id]) end def edit @user = User.find(params[:id]) end def update @user = User.find(params[:id]) if current_user == @user if @user.update(user_params) flash[:success] = 'プロフィール画像を変更しました' render :show else flash.now[:danger] = 'プロフィール画像の変更に失敗しました' render :show end else redirect_to user_path end end private def user_params params.require(:user).permit(:image) end end
ビュー
<div class="container"> <h3 class="text-center text-secondary mb-4">ユーザー情報</h3> <div class="row col-lg-6 offset-lg-3"> <div class="offset-lg-2 col-lg-4 text-center profile-image mb-3"> <%= form_for(@user) do |f| %> <% if @user.image? %> <%= image_tag @user.image.thumb.url, class: "round-img" %> <% else %> <%= image_tag "/assets/default.jpg", class: "round-img" %> <% end %> <% if @user == current_user %> <button type="button" class="btn btn-outline-secondary rounded-pill mt-3"> <%= f.file_field :image, accept: 'image/jpg,image/gif,image/png' %> </button> <%= f.submit 'プロフィール画像変更', class: 'btn btn-secondary mt-3' %> <% end %> <% end %> </div> <div class="col-lg-6 text-center profile-text mb-3"> <h3><%= @user.name %></h3> <% if @user == current_user %> <p><%= @user.email %></p> <%= link_to "プロフィール編集", edit_user_registration_path, class: "btn btn-outline-dark common-btn edit-profile-btn" %> <% end %> </div> </div> </div>
ルーティング
Rails.application.routes.draw do root to: 'tops#index' get '/users/:id', to: 'users#show', as: 'user' patch '/users/:id', to: 'users#update' resources :posts, only: %i(new create show destroy) do resources :photos, only: %i(create) resources :likes, only: %i(create destroy) end devise_for :users, controllers: { registrations: 'registrations', omniauth_callbacks: 'users/omniauth_callbacks' } # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end
form_forでnilもしくは空の状態でエラーが出ていると思うのですが、解決する方法がわかりません。ご教授頂ければ幸いです。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。