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