2013-11-20 11 views
7

sto ricreando i passaggi in questo rotaie tutorial: http://www.youtube.com/watch?v=tUH1hewXnC0file modello non rendendo risultato di form_for in Rails 4

Se cercate di 07:35, vedrete un blocco form_for l'utente ha creato. Quando aggiungo quel codice e visualizzo la pagina in un browser, la pagina viene visualizzata correttamente, ma non c'è il codice HTML in cui dovrebbe trovarsi il modulo, nemmeno i tag vuoti. Ho confermato che non si tratta di un problema con la migrazione mancante o il caricamento in cache del browser.

Ho semplificato il problema verso il basso, e ora il mio file di modello show.html.erb è solo:

<% form_for @post do |f| %> 
    testing 
    <% debugger %> 
<% end %> 

<% for i in 0..5 %> 
    <%= i %> 
<% end %> 

(Il secondo blocco è solo per assicurarsi che il rendering è in funzione)

L'html visualizzato è:

... bunch of header stuff here ... 
<body> 

0 
1 
2 
3 
4 
5 

</body> 
</html> 

"testing" non viene visualizzato come parte dell'html.

Ho inserito la riga del debugger in modo da poter utilizzare il debugger gem con il server rails --debugger. Utilizzando che mi viene a questo punto:

[196, 205] in /Users/Ben/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/actionpack-4.0.0/lib/action_view/helpers/capture_helper.rb 
    196   buf = ActionView::OutputBuffer.new 
    197   buf.force_encoding(output_buffer.encoding) if output_buffer 
    198   end 
    199   self.output_buffer, old_buffer = buf, output_buffer 
    200   yield 
=> 201   output_buffer 
    202  ensure 
    203   self.output_buffer = old_buffer 
    204  end 
    205 
(rdb:48) p output_buffer 
" testing\n" 

Così, il form_for è sempre eseguita, ma non sempre consegnato tutto il percorso attraverso l'output HTML in qualche modo. (ecco perché non mi sto preoccupando di mostrarti che sto inizializzando correttamente @post.)

Non riesco a trovare alcuna menzione di problemi simili online, ma probabilmente non cerco solo le cose giuste. Qualche idea?

risposta

16

ti manca il segno =: <%= form_for @post do |f| %>

+0

ha fatto questo cambiamento ad un certo punto nei binari? questa esercitazione http://www.youtube.com/watch?v=zG_mvp8u4cI non utilizza un segno di uguale e sembra funzionare correttamente. –

+1

@BenjaminWheeler È stato introdotto con Rails 3. Fonte: http://asciicasts.com/episodes/208-erb-blocks-in-rails-3 – Andrei

4

capito appena ho finito di scrivere questione (sembra sempre accadere su StackOverflow!)

Sulla linea form_for, <% dovrebbe essere invece <% =.

Suppongo che sia cambiato a un certo punto in rotaie?

+0

Come è diverso da @ risposta di Andrei? – paqogomez

+0

sembra che lui e io abbiamo postato le risposte allo stesso tempo –

+0

+ 1 tutto intorno :) – paqogomez