2012-12-08 83 views
1

我正在尋找一種以不同方式顯示相同@item的方法。 例如,如果@item.template == template1 - 當我點擊「顯示」鏈接 - 我看到一個佈局。 對於template2我看到另一個佈局相同的項目等佈局我的意思是不同的字體,不同的表格設計等。同一頁面的很多佈局

這樣做的最佳方法是什麼?

現在我有兩個想法:要麼有一個特殊的表格,其中column1是模板名稱,而column2是HTML,然後我只取HTML並插入@item內容。另一個想法是有很多.haml文件,並使用render命令在控制器中作出選擇。

但我仍然不確定。也許你可以提出一些建議。

回答

1

我會與很多的佈局文件去,因爲它更易於維護,版本,你可以用諧音和所有的東西。所以在控制器動作中這樣的東西:

render :layout => @item.template 
+0

哪裏更好地存儲每個佈局的圖像?例如folder1爲template1,folder2爲template2。在assets/images/layouts/templatename'下面? – user1885058

+0

可以。我想這真的取決於你。 –

1

你可以添加一個類到wrapping元素來修改設計嗎?

E.g.

<div class="item layout-<%= @item.template %>"> 
    <h2><%= @item.title %></h2> 

    <table> 
    <!-- table data here --> 
    </table> 
</div> 

然後在您.css文件

.item.layout-template1 { 
    font-family: Georgia, serif; 
} 

.item.layout-template2 { 
    font-family: Arial, sans-serif; 
} 
+0

是的,這很好,但我認爲它有點不那麼靈活比有幾個意見。 – user1885058