2016-11-09 4 views
1

Ich rende eine Vorlage außerhalb Rails. Die Vorlage ist als HTML-Datei gespeichert werden und an anderer Stelle geschickt, so in meinem Code ich habe dies:Warum ERB diese Zeile nicht rendert

erb_file = "templates/banners/#{template}.html.erb" 

erb_str = File.read(erb_file) 

@city = options[:city] 
@address = "#{@campaign.open_house_day} #{@case.open_house_from.strftime('%d/%m')} kl. #{@case.open_house_from.strftime('%H.%M')}-#{@case.open_house_to.strftime('%H.%M')}" 
... 

renderer = ERB.new(erb_str) 
result = renderer.result(binding) 

FileUtils.mkdir_p('temp') unless File.directory?('temp') 

File.open('temp/index.html', 'w') do |f| 
    f.write(result) 
end 

Alle Inhalte fein gemacht wird, aber erb einfach @address Variable ignorieren. Irgendwelche Ideen warum? Während in meinem Code, wenn ich puts @address tun, ist die Ausgabe eine Zeichenfolge wie erwartet. Wenn ich puts @address.class mache, ist die Ausgabe ein String. Was vermisse ich?

Bitte beachten Sie, dass die oben nicht Rails nicht verwendet

EDIT

Hier ist die Linie in meiner Vorlage, die ich die html machen verwenden:

<span class="wday"><%= @address %></span> 
+0

Sie @Adresse verwenden Sie? Wenn ja, wo und wie genau? –

+0

@Eric Duminil Ich habe das Snippet der Vorlage, die diese Zeichenfolge rendert – WagnerMatosUK

+0

A [mcve] wird sehr helfen. –

Antwort

0

Die Hauptsache ich kann Denken Sie daran, dass Sie die Instanzvariable nicht im selben Umfang wie das ERB-Rendering setzen.

Sie können auch versuchen, diese address im ERB zu definieren:

# make sure address is set first 
# if it's not, you have a scoping problem 
raise(ArgumentError) if @address.nil? 

binding.local_variable_set :address, @address 

puts ERB.new("<%= address %>").result binding 
+0

Dies ist wahrscheinlich der Fall (falscher Bereich) –

Verwandte Themen