0

投稿のあるリスト (pages#home) があり、クリックするとコメントのあるリスト (posts#show) が開き、そこで変数 @feed_items を宣言します。コメントの最後に、新しいコメント (comments#create) 用の simple_form があります。問題: 送信ボタンでエラーが発生した場合、既存のリストをコメント付きで表示し、エラーのあるフォームを表示する必要があります。私はコメント#createで試しています:

if @comment.save
  ...
else
  render 'posts/show'
end

ただし、この場合、メソッド posts#show が呼び出されていないため、変数 @feed_items は宣言されていません。redirect_to を書き込もうとすると、コメント付きのリストが表示されますが、エラー メッセージは表示されません。これを行う方法?

4

1 に答える 1

1

これはよくある間違いです。renderメソッドは表示するビューを選択するだけで、メソッドredirect_toはリダイレクトのアクションを再度実行します。
エラーが発生した場合は、メソッドを呼び出してrender表示するビューを選択し、このビューを解決するために必要なすべてのインスタンス変数を手動で割り当てる必要があります。Rails ガイドから
確認してください: http://guides.rubyonrails.org/layouts_and_rendering.htmlSection 2.3.2

あなたの場合、次のようになります。

if @comment.save
  ...
else
  # Populate the @feed_items in here again
  render 'posts/show'
end 
于 2012-07-19T19:44:38.477 に答える