2009-02-02 4 views
14

Ich weiß, dass ich dies in Rails tun können:Schreiben in die Antwort in Rails? (Like "echo" in PHP)

<%="hello" %> 

aber gibt es eine Möglichkeit, diese

<% 
echo "hello" 
%> 

zu tun und bekommen es in das zu zeigen, Antwort?

+0

Ja. Das Objekt existiert aber die Methode nicht :) undefinierte Methode 'write 'für #

+0

CgiResponse? Verwenden Sie ActionController :: CgiResponse.out – phresus

+0

Was ist los mit <%="hello" %>? –

Antwort

14

Haben Sie versucht concat.

Ich habe dies in Rails Dokumentation beim Wandern gesehen. Ich bin gar nicht sicher, seit ich Rails sehr neu bin.

+0

Schöner Schuss! http://api.rubyonrails.com/classes/ActionView/Helpers/TextHelper.html –

0

Sie suchen nach "print" oder "puts", je nachdem, ob Sie einen Zeilenumbruch wünschen (wahrscheinlich nicht). Fast jedes Objekt implementiert .to_s, was auch funktioniert, obwohl ich das Gefühl habe, dass es wahrscheinlich einen besseren Weg gibt zu tun, was auch immer Sie versuchen zu tun. Noch mehr Kontext dazu?

+0

Danke, nein, ich möchte es auf dem Client sehen, nicht auf der Konsole. –

+0

Es gibt keinen Grund, warum es auf der Konsole nicht funktionieren würde. <% = puts "Beliebiger Ruby-Code geht hierhin"%> – phresus

+1

-1, setzt puts (oder p) standardmäßig auf STDOUT, was NICHT bedeutet, wo die Antwort generiert wird. Und <% = puts ...%> erzeugt eine leere Zeichenfolge in der Antwort, puts (oder p) gibt nil und nil.to_s == "" zurück. – Samuel

13

Was Sie schreiben müssen, ist

<% concat "bank" %> 

jetzt Sie so etwas wie

<% 
    10.times do 
    concat "cat" 
    end 
%> 

für zehn Katze

+1

Genau. In diesem Zusammenhang ist es sinnvoll concat anstelle von <% = zu verwenden. Danke für deine Antwort. –

+0

Ich denke explizite Bindung wird nicht mehr benötigt ... –

+0

Ja, ich hatte keine Ahnung, was diese Bindung war, ich selbst. –

6

Verwendung concat tun kann, ich habe es ausprobiert und es funktioniert. Allerdings, wenn Sie HTML-Zeichen verwenden müssen, verwenden:

concat(sanitize("STRING")) 

oder Ihre app/helpers/application_helper.rb öffnen und schreiben:

def echo(str) 
    concat sanitize str 
end 

so können Sie einfach eingeben: echo "hello<br />\n"

+0

Was passiert, wenn Sie nicht sterilisieren –

+0

einfaches Genie :) – intepid