2013-11-20 76 views
0

我有一個Products表和一個Departments表。 在產品型號:根據另一個(部門)中的值提取一個表(產品)的記錄

has_one :department 

在系車型:

belongs_to :products 

我也有一個觀點對我的產品控制器,它列出了所有部門爲這樣:

<% @departments.each do |department| %> 
      <div class="column_entry"> 
       <%= link_to image_tag(department.image_attachment), products_of_a_given_main_cat_url %> 
      </div> 
<% end %> 

那些負載了罰款。當我點擊其中一幅圖像時,我希望將products_of_a_given_main_category視圖動態地填充到部門中我點擊的圖像中的產品。

在我的產品控制器:

def products_of_a_given_main_cat 

    @products = Product.all 
    @department = Department.where(:name == :department) 

    respond_to do |format| 
    format.html # index.html.erb 
    format.json { render json: @products } 
    end 
end 

,並在視圖:

<div class="the_grid_prod"> 
    <% @products.each do |product| %> 
     <% if product.department == @department.name %> 
      <div class="column_entry"> 
      <%= link_to image_tag(product.product_image.url(:normal_page_size)), products_content_url(product.id) %> 
     </div> 
     <% end %> 
    <% end %> 
</div> 

當我點擊一個部門的形象,我敢肯定,在有產品在頁面加載但也有沒有產品。我確定我在做一些非常錯誤的事情,但我不確定它是什麼。

在routes文件:

get 'products/products_of_a_given_main_cat' => :products_of_a_given_main_cat, :as => :products_of_a_given_main_cat 
+0

我想,這是一個旁白,但關於這些關聯有些事情是不對的。部門belongs_to:產品(s)?您的部門表中有一個product_id列?這看起來倒過來。你不想要'部門has_many:產品'和'產品belongs_to:部門'?產品表中有一個department_id列? –

+0

@TomL感謝您指出這一點,我不會注意到它自己,它確實有助於解決問題 – SoSimple

+0

沒問題!我不喜歡假設太多關於脂肪酶如何構建他們的數據,但它看起來像一個比你原來的問題更大的問題。 –

回答

0

問題是這樣的:

@department = Department.where(:name == :department) 

:department是一個符號,而不是一個字符串,而不是一個變量。基本上它是一個深深的數字,肯定不是一個名字。此外,這將評估爲名稱爲false的部門。不要在where部分做評估,只有哈希。

如果您從請求中獲得請求,您需要params[:department]

@department = Department.where(:name => params[:department]) 

更新:

請修改您的請求鏈接:

<%= link_to image_tag(department.image_attachment), products_of_a_given_main_cat_url(:department => department.name) %> 

這將引入一個新的參數請求,它會爲你工作與上面所寫的條件。

+0

感謝您的解釋,這有助於我更好地瞭解如何使用表格,但頁面仍然不幸地加載空白。我會仔細檢查我的記錄,以確保該部門有絕對的產品,但是在其他地方我可能會出錯? – SoSimple

+0

@SoSimple請問您可以爲此操作添加路線並將鏈接文本添加到您的問題中?你有很大的機會使用'id'而不是'department'。用':name => params [:id]'嘗試查詢。 – Matzi

+0

路線已添加,並且鏈接文字也存在:<%= link_to image_tag(department.image_attachment),products_of_a_given_main_cat_url%>。該查詢似乎並沒有與ID一起工作。 – SoSimple

0

所以爲了解決這個問題,我改變了我的關聯@TomL在他的評論中提出的建議。我也改變了以下內容:

在產品控制我刪除

@department = Department.where(:name => params[:department]) 

,改變

@products = Product.all 

@products = Product.where(:department => params[:department]) 

的products_of_a_give_main_category_view現在看起來是這樣的:

<div class="the_grid_prod"> 
    <% @products.each do |product| %> 
     <div class="column_entry"> 
      <%= link_to image_tag(product.product_image.url(:normal_page_size)), products_content_url(product.id) %> 
     </div> 
    <% end %> 
</div> 

感謝@Matzi和@TomL的幫助。非常感謝。

相關問題