如何短语rails实例?

时间:2014-02-12 14:47:15

标签: ruby-on-rails ancestry

我有一个使用Lines gem的ancestry模型。

A line can have children and parent lines.

我有一个Miniatures型号。

Lines has_many Miniatures through the Minilines table.

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

我希望能够做的是显示该行的所有相关微缩模型,并且它是孩子们。

如果一个微缩线与一条线和一条子树线相关联,它需要使用不同的true或uniq。

在与一些从事祖先宝石工作的人交谈时,我将以下内容放在我的视野中:

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

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

该代码所做的是建立微缩(正确)的链接,但使用该微型所属的行的nameid,而不是name和{ {1}}缩影。经过大量的摆弄,我非常接近它的工作。

我将代码更改为此

id

它现在输出正确的外观。缩影的<% Line.select('distinct *').joins(:miniatures).where(@line.subtree_conditions).each do |miniature| %> <%= link_to miniature.name, miniature %><br /> <% end %> 。它也具有正确的name,但是它恰好链接到miniature_id路径而不是line路径。例如,它显示了微型3的名称,但链接到miniature

我会继续摆弄它,但如果有人能看到确切的问题我会在月球上。

干杯。

1 个答案:

答案 0 :(得分:1)

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

在第一种情况下,我猜我会Lineidname列,它们会隐藏来自Miniature的列。请尝试这样做:Miniature.uniq.joins(:lines).where(@line.subtree_conditions),它将为您提供一个SELECT,该SELECT仅显示微缩模型表中的字段。