2014-02-12 31 views
0

我有一個Lines模型,它使用ancestry寶石。如何使用rails實例?

A line can have children and parent lines. 

我有一個Miniatures模型。

Lines has_many Miniatures through the Minilines table. 

在我的Lines視圖中,我可以顯示該Line的所有相關縮圖。這樣可行。

我希望能夠做的是顯示該行的所有相關縮圖,並且它是兒童。

它需要使用不同的true或uniq,以防微型與線和它的一個子樹線相關聯。

與一些人交談的祖先創業板的工作我把我的觀點如下:

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

他不認爲我的問題是創業板,而是一個軌道問題的一個問題。

什麼代碼所做的是讓一個鏈接到一個微型(正確的),但與name而行的id那是微型屬於,而不是name和縮影id。經過大量的擺弄之後,我非常接近它的工作。

我改變了代碼,這

<% 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

我會繼續擺弄它,但如果任何人都能看到確切的問題,我會在月球上。

乾杯。

回答

1

在您的第二個代碼塊中,返回的記錄不是Miniature對象,它們是Line對象 - 這是您查詢的類,這是您將獲得的類。 :)

在第一種情況下,我猜Lineidname列,它們來自Miniature。試試這個:Miniature.uniq.joins(:lines).where(@line.subtree_conditions)它會給你一個SELECT,只顯示miniature表中的字段。

+0

是的,它的工作原理。當我讀到<%'Miniature.select('distinct *')。joins(:lines).where(@ line.subtree_conditions).each do | miniature | %>'但我猜想選擇不同的東西搞砸了。無論如何,這工作,並非常感謝你。允許我繼續進行項目。太棒了。 – Ossie