2013-06-06 76 views
0

在「顏色索引視圖」中,以下內容會生成一個可點擊的鏈接,將我帶到「顏色顯示視圖」。引用模型的「顯示視圖」窗體顯示另一模型的「索引」視圖

<% @colors.each do |color| %> 
    <tr> 
    <td><%= link_to color.color_name, color_path(color) %></td> 
模型

,我有:

class Color < ActiveRecord::Base 
    belongs_to :product  

我也有一個產品索引視圖,我想創建一個可點擊的鏈接顏色顯示視圖,但我不能使它工作。

這不起作用(一兩件事,COLOR_NAME是不是在顏色表的主鍵:在模型

<% @products.each do |product| %> 
    <tr> 
    <td><%= link_to product.color_name, product.color_name, color_path(color.color_name) %></td> 

,我有:

class Product < ActiveRecord::Base 
    has_many :colors 

這不是工作,我發現了一個錯誤,當我嘗試的顏色索引視圖,類似:

undefined local variable or method color

任何想法?

解決方法:

這裏是結束了工作:

<% color_id = Color.find_by_color_name(product.color_name) %> 
<td><%= link_to product.color_name, color_path(color_id) %></td> 

它也顯然是在一行中完成,但兩行,使代碼更易讀(我認爲)

我不明白的是爲什麼有人認爲有必要降級這個問題。

+0

您的產品has_many顏色。它應鏈接到哪種顏色? – 2013-06-06 08:20:15

+0

link_to product.color_name,color_name在顏色表中,但不是主索引 – EastsideDeveloper

+0

有趣。另一個人做了這個問題的「驅動」降級,沒有留下評論。這使得兩個。如果管理員正在閱讀這篇文章,我相信只有當這個人可以解釋他們爲什麼這麼做時,才允許降級是公平的,而不僅僅是因爲他們喝醉了。我認爲這裏的目標是研究,問問和學習。 – EastsideDeveloper

回答

0

color.color_name由於您在產品索引視圖中沒有顏色對象而出現錯誤。

嘗試<td><%= link_to product.color_name, product.color_name, color_path(product.color) %></td>如果有一個一對一的關係

嘗試<td><%= link_to product.color_name, product.color_name, color_path(product.colors.first) %></td>如果有一個一對多的關係

+0

對,這就是我在這裏問這個問題的原因。如何從另一個模型的對象引用模型的對象 – EastsideDeveloper

+0

取決於兩個模型之間的關係。如果產品有一種顏色,那麼product.color。如果產品有多種顏色,那麼product.colors。產品是您的產品模型的一個對象。 – Deepika

+0

@EastsideDeveloper看看我的答案[下](http://stackoverflow.com/a/16957237/1376448)。也許這可以幫助你。 :) – kiddorails

0

Producthas_manycolors。因此,你的代碼應該是這樣的:

<% @products.each do |product| %> 
    <tr> 
    <% product.colors.each do |color| %> 
    <td><%= link_to color.color_name, color_path(color) %></td> 
    <% end %> 
    </tr> 
<% end %> 

它重複你的每一個產品的顏色和顯示link他們show路徑。

小心:可能遭受N + 1問題。以上只是給你方向。

相關問題