2015-06-19 25 views
0

內我有下面的代碼行:顯示圖像路徑,而隨後該圖像的一行if..else語句

<%= "Brand: " + (@user.activated ? "image_tag('brand1.png', class: 'branding')" : "image_tag('brand2.png', class: 'branding')") + "(#{@user.activated_at})" %> 

它應該顯示(其中所示的圖像依賴於用戶是否被激活) :

商標:{圖像} 2015年6月19日

代替圖像的,它會顯示文字圖像路徑(因此文本)。我應該如何調整我的代碼以顯示實際圖像?

+0

刪除「image_tag」周圍的引號。 – mudasobwa

+0

然後,它不會將其識別爲if-else語句。因此,它顯示兩個圖像路徑(所以再次路徑/文本,而不是圖像本身)。 – Nick

+1

我採取了更精確的外觀:您有一個錯字:'@ user.activated? ? image_tag('brand1.png',class:'brand'):image_tag('brand2.png',class:'branding')':要調用的函數是'@ user.activated?',關閉問號,另一個'? '如果是三元的。 – mudasobwa

回答

3

這是一個非常奇怪的方式來編寫一些erb模板代碼。正如@mudasobwa所說,你在圖片標籤中引用了錯誤的引號,並且在erb標籤中添加大量字符串是凌亂,脆弱和不可讀的。這兩個圖像標籤幾乎相同,因此也可以乾燥。

我會做什麼,我想你正在嘗試做的,像這樣:

<% graphic = @user.activated ? "brand1.png" : "brand2.png" %> 
Brand: <%= image_tag(graphic, class: 'branding') %> (<%= @user.activated_at %>) 
+0

是的,工作,更乾淨! – Nick

1

你可以試試下面的一個單一的標籤,與html_safe

<%= "Brand: #{(@user.activated ? image_tag('brand1.png', class: 'branding') : image_tag('brand2.png', class: 'branding'))} (#{@user.activated_at})".html_safe %> 

還是喜歡一個更聰明的方法

<%= "Brand: #{image_tag(@user.activated ? 'brand1.png' : 'brand2.png' , class: 'branding')} (#{@user.activated_at})".html_safe %> 
+0

是的,謝謝,這也適用。 – Nick