2017-11-07 5 views
0

のActiveRecord :: RecordNotFound PicsControllerで#が示すのRailsでのActiveRecord :: RecordNotFoundエラー

'ID' との写真を見つけることができませんでした= 1

抽出されたソース(ライン#まわり34):

def find_pic 
    @pic = Pic.find(params[:id]) 
    end 

エラーを解決できません。

私のpics_controller.rbは以下の通りです。

class PicsController < ApplicationController 

     before_action :find_pic, only: [:show, :edit, :update, :destroy] 

     def index 
     end 
     def show 
     end 
     def new 
     @pic = Pic.new 
     end 
     def create 
     @pic = current_user.pics.build(pic_params) 
     if @pic.save 
      redirect_to @pic,notice: "Yesss! It was posted!" 
     else 
      render 'new' 
     end 
     end 
     private 
     def pic_params 
     params.require(:pic).permit(:title, :description) 
     end 
     def find_pic 
     @pic = Pic.find(params[:id]).permit(:title) rescue nil 
     end 
    end 

マイshow.html.haml

%h1= @pic.title 
%p= @pic.description 

= link_to "Back", root_path 

アップデート:私はrake routesを実行し、ここで出力されます。

$ rake routes 
    Prefix Verb URI Pattern    Controller#Action 
    pics GET /pics(.:format)   pics#index 
     POST /pics(.:format)   pics#create 
new_pic GET /pics/new(.:format)  pics#new 
edit_pic GET /pics/:id/edit(.:format) pics#edit 
    pic GET /pics/:id(.:format)  pics#show 
     PATCH /pics/:id(.:format)  pics#update 
     PUT /pics/:id(.:format)  pics#update 
     DELETE /pics/:id(.:format)  pics#destroy 
    root GET /      pics#index 
+0

pics'テーブル – rony36

+0

'でそこに記録されていませんコンソールを開いてPic.find(1)を試してみると、そのIDのレコードがありますか? – oowowaee

+0

質問に写真を載せないでください。その代わりに、関連するテキストを切り取って貼り付けます。同じ問題を抱えている他の人がこの質問に後で出くわすかもしれませんが、あなたのイメージホストがイメージを削除した場合、質問はもう意味をなさないでしょう。 – MarsAtomic

答えて

1

十分なはずです@pic = Pic.find(params[:id])を試してください。

%h1= @pic.title if @pic.present? 
%p= @pic.description if @pic.present? 

= link_to "Back", root_path 

画像がない場合は、エラーを救済しようとします。

+0

Worked !!ありがとう。 –

0

私はこの.permitをオブジェクトに、rescue nilというものと混同しています。それはなぜ必要なのですか?

限り、私はあなたがfind_picことをリライトする必要がありますので、多分、.permitだけActionController::Parameters上で許可されてmore details

を知っている:

def find_pic 
    @pic = Pic.find(params[:id]) 
end 
+0

許可を追加しないと、別のエラーが発生します。 PicsController#showのActiveRecord :: RecordNotFound –

関連する問題