2016-11-02 9 views
0

これは私を非常にシンプルなものにしています。それが私には分かりません。私はレールに基本的なニュースアプリをつくっています。私は私の基本的なページの内容を制御する "投稿"コントローラを持っています。私は地元のニュースを持つページを持っていたい。私はポストのコントローラに行き、私はその後、私のroutes.rbをファイルに行き、ページのルートを作っ新しいページが読み込まれていない - ActiveRecord :: RecordNotFound

def local 

end 

「ローカル」と呼ばれる新しいアクションを作りました。

get "posts/local" => "posts#local" 

次に、local.html.erbファイルを作成して投稿ビューに配置しました。

私はposts_local_pathのリンクをクリックしようとすると、私はこの取得:私は理解していない

ActiveRecord::RecordNotFound 

Extracted source (around line #74): 
72 
73 
74 
75 
76 
77 

# Use callbacks to share common setup or constraints between actions. 
def set_post 
    @post = Post.friendly.find(params[:id]) 
end 

# Never trust parameters from the scary internet, only allow the white list through. 

を。これは私が開こうとしているページには何ら関与していません。私はコントローラのその部分を使用していません。私は立ち往生している。誰かが私が間違っていることを理解するのを助けることができますか?ありがとうございました!

答えて

0

私は

あなたはローカルアクション

before_action :set_post, except: [:local] 

のために呼び出されていないことを確実にしたいか、それが唯一のショー

before_action :set_post, only: [:show] 

に使われている場合は、あなたのコントローラでbefore_actionを持っていると仮定しています例外として、アクション名の配列のみをシンボルとして渡すことができます。

+0

の解答ごとに、私はこれらのアクションの前に持っている[:ショー、編集、:更新、:破壊] before_action:authenticate_user !,のみ:[編集、 :更新、:破棄、:新しい、:作成] 開こうとしているページは現在空です。基本的な空白のページを開きたいだけです。 –

+0

ルートに 'resources:posts'があると思われる場所の上に' get "posts/local" => "posts#local"がありますか?そうでない場合は、ローカルのIDで 'posts#show'を呼び出すと考えています。それでは投稿を投稿しようとするので、エラー –

0

この問題は、paramsのidをコントローラに渡していないという事実に起因しています。したがって、メソッドset_postはポストを取得できず、ActiveRecordエラーを返します。 (としてあなたのルート

  • のID PARAMまたはあなたのbefore_actionフィルタを適応させることによってset_post呼び出しを避ける:

    だから、あなたが持っている2つのオプション:

    • はどちらかあなたはset_postを使用して指定する必要がしたいですbefore_action:set_post、のみ:J-dexx)
  • +0

    今、私はページには何もしたくない。空白のページを開くだけです。私はアクションの前に持っている: before_action:set_post、のみ:[:ショー、編集、:更新、:破壊] before_action:authenticate_user !,のみ:[編集:更新、:破棄し、新しい、:作成を] (?)どちらかが空白のままページに影響するはずですか?何をすべきかわからない。 –

    関連する問題