0

我有帖子列表(pages#home),点击我打开评论列表(posts#show),我声明变量@feed_items。在评论的最后,我有 simple_form 新评论(comments#create)。问题:如果提交按钮上发生错误,我需要呈现带有评论的现有列表和带有错误的表单。我正在尝试评论#create:

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

但在这种情况下,变量 @feed_items 没有被声明,因为方法 posts#show 没有被调用。当我尝试编写 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 回答