3

您好我正在使用rails應用程序。我想實現用戶標記爲臉譜或嘰嘰喳喳做。當用戶在Feed中發佈時,他可以在開始時用@字符標記任何用戶。如何在Facebook或Twitter等Feed中標記用戶?

我使用Jquery UI Autocomplete plugin

我有這樣的參考 Implementing jquery UI autocomplete to show suggestions when you type "@"這讓我實現自動完成的部分。

但現在我想鏈接,自動完成用戶名用戶的個人資料網址例如:用戶名=麥然後鏈接應該像

生成
<a href="http://www.example.com/username">Username</a> 

所以,請指導我,我怎麼能在我的Rails應用程序中實現這一點?是有任何寶石可以這樣做。

回答

1

嘿它不上面的方法要求。我用簡單的正則表達式做了它。

<% @str = @madyrocks solved problem of @username tagging %> 

<%[email protected]_string = @str.gsub(/(\^|\s|\B)@(([a-zA-Z])(_?[a-zA-Z0-9]+)*|_([a-zA-Z0-9]+_?)*)/i, 
%Q{ <a href="http://example.com/\\2">\@\\2</a>}) %> 

在我正則表達式我已經使用(\^|\s|\B),因爲@可以在字符串的開始或之後的空白,同時標註用戶發生。

([a-zA-Z])(_?[a-zA-Z0-9]+)*|_([a-zA-Z0-9]+_?)*這是用來驗證用戶名。在我的應用程序中,用戶名必須以字母開頭,後跟字母&數字。

The no。 用於在正則表達式中進行第二次匹配。

詳情嘗試Rubular.com

正則表達式我希望這會幫助別人。

1

如果你想這樣做,你應該寫的文章內容具體的setter/getter方法。一個簡單的例子:

在模型(在本例中與後列被稱爲「內容」):

attr_reader :set_content 
attr_accessor :set_content 
attr_reader :get_content 
attr_accessor :get_content 
def set_content=(content) 

    users = content.scan(/\@(.*)\ /) 
    users.each do |user_name| 
      user = User.find_by_name(user_name[1]) 
      content.gsub!("@#{user_name[1]}", "|UID:#{user.id}|") unless user.nil? 
    end 
    self.content=content 
end 

def get_content 
    current_content=self.content 
    users = self.content.scan(/\|UID\:([0-9]*)\|/) 
    users.each do |user_id| 
      user = User.find(user_id[1]) 
      current_content.gsub!("|UID:#{user_id[1]}|", "<your link stuff here>") 
    end 
    current_content 
end 

那麼你應該使用在部分這些二傳手/ getter方法。我只是寫了這個「我的頭」,可能會有一些語法的廢話,但我認爲你uznderstoud我在說什麼!

這種方法的好處是,你還可以更改用戶名東陽你存儲用戶的ID在崗位創造的時刻。

相關問題