2011-02-19 25 views
0

我有一個模型,具有belongs_to關聯到類別。Rails路由和如何保持類別視圖DRY?

例子:

  • 事情
    • belongs_to的:類
  • 類別
    • HAS_ONE:事情

我應該爲每個類別視圖文件,找到定類別,例如:

views/things/category_name1.html.erb 
views/things/category_name2.html.erb 
views/things/category_name3.html.erb 
views/things/category_name4.html.erb 

或者是有一個更便捷的方式來做到這一點?

除了find方法中的類別名稱以外,每個類別的視圖都是相同的。我試過這個:

<%= Thing.find(:all, :conditions => {:category => 'Name of category'}) %> 

我想我的網址是/category_name/name_of_thing

回答

2

friendly_id gem將處理您正在尋找的URL生成。在你的路線中,你會想要(Rails 3)的東西。您不希望對每個類別都有看法 - 這應該是動態的。

resources :categories do 
    resources :things 
end 
+0

那寶石比我的硬核更健壯,但基本答案(+1) –

+0

如何在控制器中創建視圖動態以及類別視圖「模板」應該放在哪裏? –

+0

查看「show」資源部分中的入門指南:http://guides.rubyonrails.org/getting_started.html#showing-an-individual-post – bensie

1

不!不要創建這樣的冗餘視圖。

將下面的代碼在你的Category模型,並希望任何其他模型使用描述性網址:

def to_param 
    return "#{id} #{name}".parameterize 
end 

假設nameCategory的屬性,這將創建一個包含類別名稱的唯一URL。如果你知道這個名字肯定是獨一無二的,那麼你可以用name.parameterize替換返回行。

+1

使用to_param也可以工作,但只要使用name.parameterize,您還需要更新控制器中的Category.find(params [:id])調用。 – bensie

+0

這是正確的,忘記了這一點。 –

+0

我應該製作一個類別佈局嗎?我如何創建視圖動態? –