【发布时间】:2014-07-17 21:13:57
【问题描述】:
我有一个与其自身关联的 cmets 表,用于回复。基本上,具有 parent_id 的评论也是对他的父评论的回复。
为了渲染这个,我使用了递归视图,在过去非常简单,但不适用于 rails 3.2.0 和 ruby 2.1.1
这里是简化的代码:
<% x = comment.replies %>
<%= comment.id %>; <%= comment.class %><br/>
<%= comment.replies.class %><br><br>
<hr>
<br><br>
<% if x and x.is_a?(Array) %>
<%= render :partial => "/_redesign/entry/comment", :collection => x, :as => :comment%>
<% end %>
输出是:
349223;评论
数组
349229;评论
评论
在第二次迭代中,comment.replies 是一个评论,而不是一个数组,并且全部从那里掉下来。
但是,如果我更改第一行并添加重新加载:
<% x = comment.reload.replies %>
一切开始工作,输出是:
349223;评论
数组
349229;评论
数组
349230;评论
数组
我很想了解这里发生了什么以及关联如何返回单个对象实例而不是它们的列表以及为什么使用重新加载。
添加型号代码:
class Comment < Response
acts_as_deactivatable :dependencies => [:community_news_feed_items]
has_many :replies, :class_name=>"Comment", :foreign_key=>"referring_c_id", :order=>"date ASC"
belongs_to :parent_comment, :class_name=>"Comment", :foreign_key=>"referring_c_id"
end
【问题讨论】:
-
你能在github上推送示例应用吗?
-
你能告诉我们你是如何得到回复的吗?它是一个named_scope 还是一个关联?还有它之前在什么 Rails/ruby 上工作过?
-
能否显示非简化视图?代码在我的机器上正常工作。
-
我无法将应用推送到 git,它是一个巨大的应用,这只是其中的一小部分。它适用于 rails 2.3 和 ruby 1.8.7。我刚刚登陆这个应用程序,我必须将它升级到 rails 3.2 和 ruby 2.1.1。我解决了很多问题,但这一个打败了我。我还将添加定义关联的模型代码
标签: ruby-on-rails ruby ruby-on-rails-3.2 ruby-2.1