1前提・実現したいこと
現状、
URLを直接入力すると
他のユーザーが保存した
編集ページにも遷移してしまうので
遷移できないようにしたい
2発生している問題・エラーメッセージ
NoMethodError in PrototypesController#show undefined method `user_id' for nil:NilClass
3該当のソースコード
prototypes_controller.rb
class PrototypesController < ApplicationController before_action :authenticate_user!, only: [:show,:index,:new] before_action :move_to_index, except: :index def index @prototypes = Prototype.all end def show @prototype = Prototype.find(params[:id]) @comment = Comment.new @comments = Comment.all end def new @prototype = Prototype.new end def create @prototype = Prototype.new(prototype_params) if @prototype.save redirect_to root_path else render :new end end def edit @prototype = Prototype.find(params[:id]) end def update @prototype = Prototype.find(params[:id]) if @prototype.update(prototype_params) redirect_to prototype_path else render:edit end end def destroy @prototype = Prototype.find(params[:id]) if @prototype.destroy redirect_to root_path end end def move_to_index unless user_signed_in? && current_user.id == @prototype.user_id redirect_to action: :index end end private def prototype_params params.require(:prototype).permit(:title, :catch_copy, :concept,:image).merge(user_id: current_user.id) end end ``
routes.rb
Rails.application.routes.draw do devise_for :users root to: 'prototypes#index' resources :prototypes do resources :comments, only: :create end end
4自分で調べたことや試したこと
以下のコードも試したが、解決できなかった
def move_to_index unless user_signed_in? redirect_to action: :index end
5使っているツールのバージョンなど補足情報
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/25 07:19