私は自分のアプリで引用メカニズムに取り組んでいます。たとえば、そのトピックのコメント26を引用するために、コメントフォームに#26を単に入力することが可能である必要があります。
ユーザーが最初に1つ以上のコメントを引用したいかどうかを確認するために、current_user.comments.buildの後、@ comment.saveの前にif条件を配置します。
しかし、私の質問をもう少し一般的で適応しやすくするために:
if @comment.content.include?(/\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i)
このようなものが欲しい。この例は、コメントのコンテンツにメールが含まれているかどうかを確認するためのものです。しかし、論理的には「正規表現を文字列に変換できません」というエラーが発生します。
どのようにインクルードできますか? Rails with regexp?)のメソッドでは、テキストに特定の正規表現形式の文字列が含まれているかどうかを確認するには?
または、コントローラはそのような正規表現アクションの間違った場所ですか?
私はRuby正規表現をこのようにしています:
stringObj.match(/regex/)
またあります
if @comment.content =~ /regex/
以前のすべてのコメント@prev_commentsの配列があり、それらをすべて一度に置き換えたい場合は、次のことができます。
pattern = /#(\d+)/
@comment.content.gsub(pattern) do
cur_match = Regexp.last_match
idx = cur_match[1].to_i - 1
@prev_comments[idx]
end
TrickはRegexp.last_matchを使用して現在の一致を取得しているため、スレッドセーフかどうか疑問に思いました。 is だそうです。
以下のより一般的な文字列拡張から適応(盗難)
class String
def js_replace(pattern, &block)
gsub(pattern) do |_|
md = Regexp.last_match
args = [md.to_s, md.captures, md.begin(0), self].flatten
block.call(*args)
end
end
end
.includeの性質に合わせるには?
stringObj.match(/regex/).present?
Rails(またはActiveSupport)を使用している場合、同様の真/偽の結果が得られます