2013-09-29 22 views
0

這裏是我的控制器操作軌控制器來獲得多個表的數據單項

@posts = Post.where(sub_category_id: params[:id]).paginate(page: params[:page], per_page: 2).to_a 

的職位表中包含CATEGORY_ID,sub_category_id,PRODUCT_ID。所有有三個表

現在我需要從id的映射名稱。我怎麼能實現它。

我試過@sub_category = SubCategory.find params[:id]得到子類別它工作正常。

以上方法是否好?如果是的話,我怎樣才能獲得其他表格數據。

編輯-1

我有以下字段

  1. ID
  2. CATEGORY_ID
  3. sub_category_id
  4. PRODUCT_ID表後
  5. 標題

我有以下一組表

  1. 類別
  2. 子類別
  3. 產品

的在我看來,我的title是超鏈接。當我點擊它。它會重定向到尊重帖子頁面,我必須表現出breadcrum這樣Electronics->Laptop->Dell

編輯-2

我嘗試過,但得到錯誤的

undefined method `category_id' for #<ActiveRecord::Relation::ActiveRecord_Relation_Post:0xb4e7a9f0> 

試過以下

@posts = Post.where(sub_category_id: params[:id]).paginate(page: params[:page], per_page: 2).to_a 
    @category = Category.find(@posts.category_id) unless @posts.blank? 
+1

有可能是語言上的障礙在這裏,但它是很難理解你的問題:如何做到這一點,如果你只需要從Category文本並沒有其他信息的一個例子。 – tyler

+0

@tyler請檢查我的編輯1,以便更好地瞭解我所嘗試的內容。 – overflow

回答

0

你必須在鏈接中添加參數,東西像這樣:

<a href='/controller/post?category_id=1&sub_category_id=2&product_id=3'>click-here</a> 
0

如果你在你的show或其他行動post,你可以得到你的價值觀,像這樣:

# PostsController#show 
... 
@post = Post.find(params[:id]) 
@category = Category.find(@post.category_id) 
@sub_category = SubCategory.find(@post.sub_category_id) 
@product = Product.find(@post.product_id) 

然後在您的視圖:

# show.html.erb 
... 
<%= @category.name + ">>" + @sub_category.name + ">>" + @product.name %> 

這假定你有一個.name方法來獲取你想要的文本。您還需要處理未找到Category/SubCategory//Product的情況,在這種情況下您將獲得nil。您不能撥打nil上的.name方法,因此您需要採取措施處理該情況。

@category = Category.find(@post.category_id) 
@category_name = @category.name unless @category.blank? 
+0

你能檢查一下我的'edit-2'嗎? – overflow

+0

'@ posts'是一個集合('Array'),你在'index'操作中使用。 '@ post'(單數)是一個特定的'Post',你通常在你的'show'動作中設置。你不能從'Array'的'Post'模型中調用方法。請注意,我沒有建議你在'@ posts'上調用'.category_id'方法,我建議你在'@ post'上調用它,這是一個特定的'Post'。 – tyler

相關問題