如何短语rails实例



我有一个使用ancestrygem的Lines模型。

A line can have children and parent lines.

我有一个Miniatures型号。

Lines has_many Miniatures through the Minilines table.

在我的线条视图中,我可以显示该线条的所有相关微缩模型。这很管用。

我想做的是展示这条线的所有相关微缩模型,以及它的孩子们。

它需要使用不同的true或uniq,以防微型与Line及其子树Lines之一相关联。

通过与从事祖先宝石工作的人交谈,我提出了以下观点:

<% Miniature.select('distinct *').joins(:lines).where(@line.subtree_conditions).each do |miniature| %>
<%= link_to miniature.name, miniature %><br />
<% end %>

他认为我的问题不是宝石的问题,而是铁轨的问题。

该代码所做的是链接到一个微型(正确),但使用该微型所属行的nameid,而不是该微型的nameid。经过一番周旋之后,我几乎要把它发挥作用了。

我把代码改成了这个

<% Line.select('distinct *').joins(:miniatures).where(@line.subtree_conditions).each do |miniature| %>
<%= link_to miniature.name, miniature %><br />
<% end %>

它现在输出正确的东西。微型的name。它也有正确的miniature_id,但令人困惑的是,它链接到line路径,而不是miniature路径。例如,它显示了小型数字3的名称,但链接到localhost:3000/lines/3

我会继续摆弄它,但如果有人能看到确切的问题,我会欣喜若狂的。

干杯。

在您的第二个代码块中,返回的记录不是Miniature对象,它们是Line对象-这是您查询的类,这是您将得到的类。:)

在第一种情况下,我猜Lineidname列,它们遮蔽了来自Miniature的列。请尝试以下操作:Miniature.uniq.joins(:lines).where(@line.subtree_conditions),它将为您提供一个SELECT,它只显式地针对miniatures表中的字段。

最新更新