1

ユーザーがコメントを入力したときにYoutubeのような機能を作成することを検討したいと思います。ユーザーが「@username」のようなものを持っている場合、システムは「@」記号を認識し、ユーザー名のコメントへのリンクを作成します。Rails 3を使用して開発していますが、この機能に必要なロジックに関する情報をいただければ幸いです。

編集:追加の質問:このためのロジックを配置するのに最適な場所はどこですか?私はコントローラーがそうなるように感じますので、クライアントがjavascriptを持っていなくても、それはまだ機能します。

4

1 に答える 1

3

これを行うには、複数の(そしてさらに良い)方法があると確信しています。私のやり方は-

入力文字列を解析する関数:ヘルパー関数を作成しました-

  1. 投稿内のすべての単語と、「@」で始まるすべての単語をトラバースしました
  2. そのような単語ごとに、ユーザーがアプリケーションに存在するかどうかを確認しました。
  3. はいの場合は、単語をユーザープロファイルへのリンクに置き換えます。
  4. 新しい投稿(リンク付きの投稿)をデータベースに書き込みます。

    def mention_users_and_tags(post)
        post_with_user_links = ""
        words = post.message.split
        words.each do |word|
            if word[0] =~ /^@.*/ and word.length > 1
                if extract_user_if_exists(word[1,word.length-1])
                    post_with_user_links << "#{link_to "#{word}", :controller => "users", :action => "show", :id => @mentioned_user.id} "
                else
                    post_with_user_links << word << " "
                end
            end
        end
    end
    

編集-このメソッドはモデルで記述し、コントローラーで呼び出す必要があると思います。レールでコーディングするのはこれが初めてだったので、すべてがどこに行くのかよくわからなかったので、これをヘルパー関数として作成しました。しかし今では、すべてのビジネスロジックがモデルに組み込まれていることがわかりました。投稿でユーザーに言及することはビジネスロジックの一部と見なすことができるので、モデルにそのための関数を記述します。

于 2012-04-14T10:26:58.937 に答える