您可以使用正則表達式從文本中提取哈希標籤。這裏有一個線程:Best HashTag Regex這篇文章是關於.NET的,但正則表達式非常普遍,所以你應該能夠使用那裏的東西。 (我建議Rubular測試正則表達式)。這一次似乎流行:
hashtag_regex = /\b#\w\w+/
現在,你有一個當你拉#標籤出這樣不同的選擇:
方案一
您可以實時拉出來」 ',當用戶加載瀏覽頁面時。這可能會更容易編碼,但不夠靈活 - 您可能無法執行按標籤搜索帖子或計算特定標籤出現次數等內容。在這種情況下,您可以通過瀏覽網頁渲染視圖提取主題標籤,例如,像這樣:
<% @posts.each do |post| %>
Text: <%= post.text %>. Hashtags: <%= post.text.scan(hashtag_regex).join(',') %>
<% end %>
方案二
創建後時,您可以提取主題標籤/編輯,存儲它們,無論是在Post模型的新領域,或在相關模型(郵政has_many :hashtags
),像這樣:
def create
@post = current_user.posts.build(params[:post])
@post.hashtags = @post.text.scan(hashtag_regex)
或作爲樁模型回調:
class Post < AR:B
before_save :extract_hashtags
def extract_hashtags
hashtags = text.scan(hashtag_regex)
end
end
然後簡單地顯示出來:
<% @posts.each do |post| %>
Text: <%= post.text %>. Hashtags: <%= post.hashtags %>
<% end %>
這種方法可能會更有效,並通過將數據庫中的井號標籤在自己的領域或表,你就必須進行排序的能力由他們,搜索他們,或者數它們。
我希望這是有幫助的。
謝謝!我可能會去第二個選項。我不想顯示'post.text',只是'post.hashtags'。是否可以在這些井號標籤上使用'(「created_at desc」)'並按日期排序? – 2013-04-29 18:30:07
如果你使用關聯的模型選項(創建一個'Hashtag'模型),那麼你可以爲它們的每個實例創建一個'created_at'日期(實際上默認情況下會有)。如果你使用Post模型中的'field'選項,你可以破解使用Post的'created_at'或'updated_at'字段的東西,但我不確定這是否足夠滿足你的目的。 – MrTheWalrus 2013-04-29 18:32:33
最後一個問題,你是否熟悉'Twitter-Text-Rb Gem'?你知道這是否對我的情況有用嗎? – 2013-04-29 18:42:15