2015-04-23 7 views
5

Ich versuche, eine E-Mail-Adresse in ActionMailer mit Rails festzulegen. Bevor es hart codiert wurde, möchten wir sie jetzt zu ENV-Variablen machen, sodass wir den Code nicht jedes Mal ändern müssen, wenn sich eine E-Mail ändert.Einfache Anführungszeichenfolgen-String-Interpolation

Hier ist, wie es derzeit definiert:

from = '"Name of Person" <[email protected]>' 

Ich habe versucht, die E-Mail als Umgebungsvariable ENV['EMAIL'] verwenden, aber ich habe kein Glück sogar mit #{ENV['EMAIL'}.

Kann mir jemand in die richtige Richtung zeigen?

+0

[Action Mailer Basics - Senden E-Mail mit Namen] (http: //guides.r ubyonrails.org/action_mailer_basics.html#sending-email-with-name) – Stefan

Antwort

8

Sie können die String-Interpolation bei Strings mit einfachen Anführungszeichen in Ruby nicht verwenden.

Aber doppelt zitierte Strings können!

from = "'Name of Person' <#{ENV['EMAIL']}>" 

Aber wenn Sie möchten, dass Ihre doppelte Anführungszeichen zu halten, die Name of Person Einwickeln, können Sie sie mit einem Backslash \:

from = "\"Name of Person\" <#{ENV['EMAIL']}>" 

oder benutzen String-Verkettung:

from = '"Name of Person" <' + ENV['EMAIL'] + '>' 
# but I find it ugly 
+0

funktioniert ein Traum. Könnte schwören, dass ich das gestern versucht habe, aber ich wurde Null. Alles funktioniert jetzt :) Ich werde akzeptieren, sobald die Zeit verstrichen ist. – DMH

+0

nur btw Sie müssen nicht explizit + Zeichen setzen, um Strings in Ruby zu verketten '' "Name der Person" <'ENV [' EMAIL ']'> ''wird auch funktionieren, aber ID befürworten, erste/zweite Beispiel zu verwenden bereitgestellt von MrYoshiji – mymlyn

+0

Dies beantwortet die Frage nicht. Manchmal * muss * Rubin innerhalb einfacher Anführungszeichen interpolieren (z. B. in d3 js svg-Parametern, die nur Anführungszeichen-Eigenschaften zulassen). –

6

Wenn Wenn Sie doppelte Anführungszeichen in eine interpolierte Zeichenfolge einbetten möchten, können Sie% -Schreibweise-Trennzeichen verwenden (die Ruby von Perl gestohlen hat), z

from = %|"Name of Person", <#{ENV['EMAIL']}>| 

oder

from = %("Name of Person", <#{ENV['EMAIL']}>) 

Wählen Sie einfach ein Trennzeichen nach dem %, die nicht bereits in der Zeichenfolge ist.

2

Sie können auch format verwenden.

from = format('"Name of Person", <%s>', ENV["EMAIL"]) 

Alternative Syntax mit dem % Betreiber:

from = '"Name of Person", <%s>' % ENV["EMAIL"] 

Hier habe ich es nicht so häufig in Ruby als in anderen Sprachen (zB C, Python), aber es funktioniert genauso gut gesehen verwendet die Dokumentation ist für format (aka sprintf):

http://ruby-doc.org/core-2.2.0/Kernel.html#method-i-format

+0

Die Verwendung von '%' ist idiomatischer. –