Ruby on rails 3 Rails 3递归多态注释模型,如何重定向到最顶层的父级

Ruby on rails 3 Rails 3递归多态注释模型,如何重定向到最顶层的父级,ruby-on-rails-3,recursion,polymorphic-associations,Ruby On Rails 3,Recursion,Polymorphic Associations,我仍然在Rails中获得荣誉,遇到了一个需要帮助的问题。我正在构建一个应用程序,它有各种模型(故事、照片、艺术品等),用户可以对这些模型进行评论,也可以自己进行评论。我有98-99%的功能在工作,但我在评论创建后,仍然坚持重定向到最顶端的父对象(故事、照片等) 我的评论模型如下所示: # /app/models/comment.rb class Comment < ActiveRecord::Base belongs_to :commentable, :polymorphic =>

我仍然在Rails中获得荣誉,遇到了一个需要帮助的问题。我正在构建一个应用程序,它有各种模型(故事、照片、艺术品等),用户可以对这些模型进行评论,也可以自己进行评论。我有98-99%的功能在工作,但我在评论创建后,仍然坚持重定向到最顶端的父对象(故事、照片等)

我的评论模型如下所示:

# /app/models/comment.rb
class Comment < ActiveRecord::Base
  belongs_to :commentable, :polymorphic => true
  has_many :comments, :as => :commentable
end
# /config/routes.rb
resources :comments do
  resources :comments
end

resources :stories do
  resources :comments
end
我需要更改的特定行是
redirect\u to:back
行(其他所有内容、多态性、注释递归等都可以正常工作)。当前代码在用户评论某个故事时按预期工作,但在用户评论某个评论时并不理想,因为该功能的表单不在故事“显示”页面上(可能需要?)

我试图做的(我怀疑解决方案可能是)是一个方法,它可以找到父对象,并在该对象是注释时递归。我以前做这件事的尝试一点也不干净,我还没有得到一个可以工作的原型

我用它作为我大部分代码的基础,但是
重定向到:id=>nil
对我来说不起作用,因为create comment方法被调用了,当它试图构建注释时,它会导致
NilClass错误
(也许我的路由有问题,因为我看不到索引操作如何调用create?)

Rails专家们,我做错了什么?我需要在这里做什么才能让它工作?我觉得我99%都在那里,但最后的1%让我发疯


提前谢谢…

好的,我读了几遍

@comment.commentable 

将返回一个Story实例或任何做注释的对象。

解决了这个问题…它可能不是最干净的,但它可以工作:

我首先在comments controller中添加了一个方法

def get_master
  @parent = @comment.commentable
  if @parent.respond_to?('commentable_type')
    @comment = @parent
    get_master
  else
    return @parent
  end
end
然后我将重定向_更改为在create控制器中调用此方法

关键是理解@object.response\u?我需要做的是检查是否定义了一个方法


这里有一个完整的例子说明它的工作原理:

当然,这绝对是解决方案的一部分。当注释嵌套在(可能的)一系列其他注释下时,我需要在递归中这样做。
@comment.commentable 
def get_master
  @parent = @comment.commentable
  if @parent.respond_to?('commentable_type')
    @comment = @parent
    get_master
  else
    return @parent
  end
end