正規表現を使用して、ハッシュタグをテキストから引き出すことができます。ここにスレッドがあります: Best HashTag Regexその投稿は .NET に関するものですが、正規表現は非常に普遍的であるため、そこで何かを使用できるはずです。(正規表現のテストにはRubularをお勧めします)。これは人気があるようです:
hashtag_regex = /\b#\w\w+/
これで、次の方法でハッシュタグを引き出すタイミングを選択できます。
オプション 1
ユーザーが参照ページをロードすると、「リアルタイムで」それらを引き出すことができます。これはおそらくコーディングが簡単になりますが、柔軟性に欠けます。ハッシュタグで投稿を検索したり、特定のハッシュタグの出現回数を数えたりすることはおそらくできないでしょう。この場合、たとえば次のように、参照ページによってレンダリングされたビューでハッシュタグを抽出できます。
<% @posts.each do |post| %>
Text: <%= post.text %>. Hashtags: <%= post.text.scan(hashtag_regex).join(',') %>
<% end %>
オプション 2
投稿が作成/編集されたときにハッシュタグを抽出し、それらを Post モデルの新しいフィールドまたは関連付けられたモデル ( 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 %>
このアプローチはおそらくもう少し効率的で、データベース内のハッシュタグを独自のフィールドまたはテーブルに配置することで、それらで並べ替えたり、検索したり、数えたりすることができます.
これがお役に立てば幸いです。