これを行うには、複数の(そしてさらに良い)方法があると確信しています。私のやり方は-
入力文字列を解析する関数:ヘルパー関数を作成しました-
- 投稿内のすべての単語と、「@」で始まるすべての単語をトラバースしました
- そのような単語ごとに、ユーザーがアプリケーションに存在するかどうかを確認しました。
- はいの場合は、単語をユーザープロファイルへのリンクに置き換えます。
新しい投稿(リンク付きの投稿)をデータベースに書き込みます。
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
編集-このメソッドはモデルで記述し、コントローラーで呼び出す必要があると思います。レールでコーディングするのはこれが初めてだったので、すべてがどこに行くのかよくわからなかったので、これをヘルパー関数として作成しました。しかし今では、すべてのビジネスロジックがモデルに組み込まれていることがわかりました。投稿でユーザーに言及することはビジネスロジックの一部と見なすことができるので、モデルにそのための関数を記述します。