2013-11-20 28 views
7

我重新創建在這個步驟導軌教程: http://www.youtube.com/watch?v=tUH1hewXnC0模板文件中未渲染的form_for的結果軌道4,5

如果你尋求7時35分,你會看到的form_for塊用戶已經創建。當我添加代碼並在瀏覽器中查看頁面時,頁面呈現正常,但表單應該沒有html - 甚至不包含空標籤。我已經確認這不是缺少遷移或瀏覽器緩存的問題。

我已經簡化這個問題了,現在我的show.html.erb模板文件就是:

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

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

(第二塊是隻是爲了確保渲染工作)

呈現的html是:

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

0 
1 
2 
3 
4 
5 

</body> 
</html> 

「測試」不會作爲html的一部分呈現出來。

我放入該調試器行,以便我可以使用調試器gem與rails服務器--debugger。使用讓我到這一點:

[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" 

所以,結果收到了執行的form_for,但沒有得到傳遞,一路過關斬將,以輸出HTML莫名其妙。 (這就是爲什麼我不打擾你告訴你我正在初始化@post。)

我在網上找不到類似的問題,但我可能只是沒有找到正確的東西。有任何想法嗎?

回答

16

你錯過了=標誌:<%= form_for @post do |f| %>

+0

在軌道中的某個點做了這種改變?本教程http://www.youtube.com/watch?v=zG_mvp8u4cI不使用等號,它似乎工作正常。 –

+1

@BenjaminWheeler它被引入了Rails 3. 來源:http://asciicasts.com/episodes/208-erb-blocks-in-rails-3 – Andrei

4

一旦想通了,我寫完問題(似乎總是在計算器發生!)

在的form_for線,<%應改爲<%=。

我想在軌道上的某個點有所改變?

+0

這怎麼比@安德烈的回答有什麼不同? – paqogomez

+0

看起來像他和我發佈答案在同一時間 –

+0

+ 1的所有方式:) – paqogomez