2012-01-07 32 views
3

我是rails新手,想知道如果數據庫條目爲空,是否可以在視圖中顯示默認消息。例如,如果你有一個形象,你可以這樣做:如果數據庫項是空的,請在視圖中顯示此消息

<%= image_tag "#{post.imge}", :alt => 'Currently no image available'%> 

因此,如果沒有在那裏的圖像鏈接,將拿出「目前還沒有像」 但是說,如果你只是想展示一個字符串,因此:

<%= post.info %> 

但如果post.info是空的我希望像顯示「目前沒有相關信息」的另一種信息?我知道, <%= post.info,:alt =>'目前沒有可用的信息'%> 不起作用,但我似乎無法找到任何方法來做到這一點 - 可能是因爲它很容易沒人有沒有問過這個問題哈哈!

我嘗試使用下面的解決方案以幫助,因爲我想用幾個不同的項目,但我似乎無法得到它的工作 - 我已經添加下面我的代碼:

module ApplicationHelper 
    def chk_blnk(gogo) 
    if gogo.blank? 
     "No img" 
    else  
     return gogo 
    end 
    end 
end 

我也不知道如何當它發生在一個變量(post.info)調用它的觀點我知道,通常你會說它是這樣:

<%= chk_blnk %> 

我很抱歉,如果這些都真的基本問題,我試圖尋找答案,但我似乎無法找到任何答案。

回答

8

你可以這樣做:

<%= post.info.blank?? 'No post' : post.info %> 

,或者,如果你知道post.infonil(而不是一個空字符串),當沒有了什麼東西:

<%= post.info || 'No Post' %> 

或,如果你需要包含一些標記:

<% if post.info.blank? %> 
    <p>No Post</p> 
<% else %> 
    <%= post.info %> 
<% end %> 

順便說一句,這個行爲:

<%= image_tag "#{post.imge}", :alt => 'Currently no image available' %> 

當沒有顯示圖像是依賴於瀏覽器:一些會給你一個殘缺的圖像圖標,有的會顯示alt文字,有些人會無法顯示。您濫用alt attribute

的首選裝置用於標記一個替代文本用於img元件是使用alt屬性以提供一個完整的等效的圖像,或以提供alt屬性具有空值(表示圖像純粹是表示性的)。

alt文本應該是適用於屏幕閱讀器和其他非圖形接口,以便使用目前沒有可用圖像的圖像的描述爲alt值沒有太大的意義。

+0

喜mu太短了,謝謝你的回覆,關於alt的提示我現在不會用這種方式。我正在嘗試使用if語句的第二種解決方案,但使用.blank? (因爲它是一個字符串)在幫手。但我似乎無法實現它 - 我已將它添加到上面的帖子中。 – user1104150 2012-01-07 04:36:49

+0

@ user1104150:它應該是空白的,但是出於某種原因,我的手指放入了空的?我沒有看到這個問題有任何改變,你還在努力嗎? – 2012-01-07 04:42:23

+0

沒問題只是編輯它 – user1104150 2012-01-07 04:44:12

2

由於畝太短的答案基本相同,我會刪除我的並給你另一種可能性。

如果總是關於空字符串或者是nil對象,那麼你可以添加一個or方法Ruby的StringNilClass

class String 
    def or(default) 
    self.empty? ? default : self 
    end 
end 

class NilClass 
    def or(default) 
    default 
    end 
end 

有了這個,你可以這樣做:

<%= post.info.or('Currently no information available') %> 
+0

感謝您的回覆我不知道該把這個方法放到應用程序控制器的位置上嗎? – user1104150 2012-01-07 04:34:09

+0

您可以在初始化程序中添加此代碼。例如。 '配置/初始化/ extensions.rb'。 – Mischa 2012-01-07 06:03:55

相關問題