2017-04-25 12 views
6

私はレールの背景を持っていると私はenter image description here動的なコンテンツが

私の電子メールテンプレートは、そのようなタグを持つことになり、画像のようにのようなものを実装するために働いています。電子メールをクライアントに送信している間に、彼の情報はテンプレートでいっぱいになります。私はこのリンクhereを見つけましたが、答えはありません。私は見上げて、this宝石を見つけましたが、それは液体テンプレートを使用するので私はそれを使用することができません、私は時間の制限のためにそれを実装することができませんでした。

私は{{first_name}}を見つけることのすべてを行うことができ、タグが出現するたびにコンテンツを置き換えることができますが、その効率的な方法を実装するかどうかは疑問です。

あなたのアイデアや指針を教えてください。ありがとうございました:)

答えて

0

これまで説明したように、液体を使用して交換するか、(http://www.kuwata-lab.com/erubis/)を試すことができます。

別のオプションは、そのようなタグを置き換えることです:

ERB.new(your_template.gsub("{{", "<%=").gsub("}}", "%>")).result 

あなたは{{ }}構文を使用する変数のデフォルトの印刷を変更します。

+0

私はこれを行うことはできません恐れています。これは非常に安全ではない方法であり、SQLインジェクションを受けやすいものです。私が 'first_name'をvalueに置き換えなければならない画像と、' user'の 'first name'の値は' User.delete_all'です。それがここで置き換えられると、私の文字列は '<%= User.delete_all%>'のようになります。私はここで何か他のことを言う必要はないと思う。私のデータベースはすべてのデータがなくなって崩壊します。 – Aakanksha

+0

これはユーザーが使用する予定ですか?私はあなたのチームだけがそれを使うと思っていました。 – diofeher

+0

エンドユーザーは、電子メールを送信する予定のユーザーのデータでタグを置き換えるテンプレートを準備する必要があります。私は私の解決策を共有しました。それに関する提案は歓迎されます。ありがとう – Aakanksha

4

私はこの回答を投稿してすぐにそれを忘れてしまったので、upvoteがそれについて私に思い出させた。私はそれが仕事作り、私の解決策を共有することに成功し得た場合、誰がそれを探しています:

class DynamicTemplateModel < ActiveRecord::Base 

    def self.parse_template(template, attrs={}) 
    result = template 
    attrs.each { |field, value| result.gsub!("{{#{field}}}", value) } 
    # remove anything that resembles a field but did not match a known field name 
    result.gsub!(/\{\{\.w+\}\}/, '') 
    return result 
    end 

end 

使用DynamicTemplate.parse_template(body, details)

details = {first_name: user.first_name, last_name: user.last_name, company: user&.company&.name, email_address: user.email} 

body = "Hi {{first_name}} {{last_name}}, Your company {{company}} is registered with us successfully" 

付きparse_templateメトd、新しいボディは期待どおりになります。

私の主な関心事はdiofeher solutionで、文字列の置換についてはセキュリティが問題でした。それでこれで管理してください。

これは誰かを助けることを望みます。より良いものにするための提案を残してください。ありがとう

関連する問題