0

我正在使用Rails 3.2.8,需要根據URL參數和登錄的用戶帳戶在特定網頁中包含或導入HTML(實際上是ERB)文件。所以導入的HTML/ERB文件會經常不同。使用Rails的partials爲每個用戶包含不同的html

例如,我曾經在一個show.html.erb文件下面的代碼:

<%= render "levels/#{@level.name}/#{@user.version}" %> 

是否適合使用諧音爲這個目的是什麼?根據the documentation,partials「是另一種將渲染過程分解爲更易管理的塊的設備。」我使用partials不是爲了模塊化頁面構建過程,而是爲了動態呈現不同的內容。我擔心我正在做的事情的表現後果和副作用。有沒有更好的方法來完成我想要的Rails上面的東西?

+0

忘記關閉括號 <%= render「levels /#{@ level.name}/#{@user.version}」%> – Azzurrio

+0

@Azzurrio你說得對,更正了,謝謝。 –

回答

0

如果這些部分有一定數量(有3個等級和2個版本),那麼可以有6個部分可以調用。隨着這種增加,使用嵌入式ruby來呈現不同的html可能會更好。那就是

<div> 
    <% if user.version == 2 %> 
    <!-- render some stuff --> 
    <% else %> 
    <p> 
     <!-- some other stuff --> 
    </p> 
    <% end %> 
</div> 

如果您擔心性能,可以使用fragment caching。 Heroku有一個很好的crash course in caching

總之,是的,可以用這種方式來使用偏分量;但個人而言,我會嘗試將其重構爲少量的緩存塊代碼部分

如果您有成千上萬的偏好,我不認爲有一個單一的方式來處理它們。這聽起來像它可能幾乎是一個單獨的應用程序,你想嵌入到你的應用程序。 Rails通過engines解決了這個問題。如果引擎不是一個選項,你也可以看看presenters

+0

每個關卡有大約1000個關卡和大約30個版本......所以有不少「偏見」。這些偏分量很大,將它們放在show.html.erb頁面中是沒有意義的。 –

+0

你是如何生成部分?也就是說,你有沒有產生這些偏微分的函數呢,還是你想知道如何編寫所有這些函數? –

+0

部分都是手動設計和創建的。有不同的版本只是彼此略有不同。 –

相關問題