3

こんにちは私はレールアプリケーションに取り組んでいます。私はfacebookやtwitterのようにユーザーのタグ付けを実装したい。ユーザーはフィードに投稿しているときに、開始時に@文字で任意のユーザーにタグを付けることができます。FacebookやTwitterのようにフィードのユーザーにタグを付けるにはどうすればいいですか?

私はJquery UI Autocomplete pluginを使用しています。

私はこの参照を持っています Implementing jquery UI autocomplete to show suggestions when you type "@"これは自動完成部品の実装に役立ちました。

しかし、今私は、URLなどのユーザー名=マックのプロファイルをユーザーにその自動完了したユーザー名をリンクする、リンクがそうですか?どのように私は私のRailsアプリケーションでこれを実装することができます私を導いてください

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

のように生成されなければなりませんそこには何か宝石があります。

答えて

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]+_?)*これはユーザー名の検証に使用されます。私のアプリケーションでは、ユーザ名は、アルファベットの後にアルファベットの&の数字で始まる必要があります。

は、正規表現で2番目の一致を取るために使用されました。詳細については

は、私は、これは他人を助けることを願っていますRubular.com

上の正規表現を試してみてください。

1

これを行うには、ポストコンテンツに特定のセッター/ゲッターメソッドを記述する必要があります。簡単な例:モデルで

(この例では、ポストと列は「コンテンツ」と呼ばれている):

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 

その後、あなたは部分的でこれらのセッター/ゲッターメソッドを使用する必要があります。私はちょうどそれにいくつかの文法的なくそがあるかもしれないが、 "私の頭の中に"書きましたが、私はあなたが何を話しているのかと思っています。

この方法の利点は、投稿の作成時にユーザーのIDを保存することによって、ユーザー名を変更することができることです。

関連する問題