2011-10-08 60 views
1

的render @events輸出在一個視圖中,我使用_event.html.erb來創建輸出。我想在另一個區域(主頁)上使用render @events,但我希望它可以稍微不同地呈現頁面。我怎麼做?如何更改基於頁面

回答

0

我至少看到這一點:

  • 使用CSS,你可以用它來定位元素,隱藏別人,顏色等
  • 呈現不同的諧音在每個模板

對於第一種選擇(我會用哈姆,我會簡單):

# events.html.haml 
.index= render @events 

# homepage.html.haml 
.events= render @events 

# your css 
.index { color: red; } 
.events { color: blue; } 

更簡單些,我相信是的@iain建議之一:

# action template 
= render partial: '/events/event1', collection: @events 

# _event1.html.haml 
.name #{event1.name} 

這樣你就可以乾淨使盡可能多的不同的諧音,只要你喜歡,對渲染調用有點重複。我同意,如果可能的話,你應該避免在視圖中聲明。

我強烈建議參考guides,因爲它們非常清晰易讀。這裏

哈希是Ruby 1.9的風格,如果你使用Ruby 1.8的東西,如:collection => @events

希望這會有所幫助,對不起我的答案激烈編輯替換類似collection: @events

+0

我對軌道非常陌生,所以試圖弄清楚如何解釋我想做什麼。 如果我在兩個地方渲染@events,我如何讓它們調用不同的部分?我希望他們有點不同。在主頁上,我不希望渲染事件顯示某些信息,但在事件列表頁面上,我希望顯示所有信息。 –

+0

[只是爲了防止你不知道哈姆](http://haml-lang.com),'<%= foo %>'在erb中完全轉換爲'= foo'在haml – ecoologic

1

根據他們的不同,可以使用演示者,如在latest Railscast中演示的那樣。

如果差異是結構性的,只需製作兩個部分。您的觀點中的少量重複是完全可以接受的,可能更適合將邏輯放入您的觀點。嘗試抵制在您的觀點中創建if語句的衝動。

+0

,最新的截屏非常有趣! - 兩個有效的替代品 – ecoologic

+0

@iain如果我做了兩個partials,當我調用渲染事件時,rails如何知道使用哪一個? –