【发布时间】:2013-11-20 15:48:52
【问题描述】:
我正在重新创建此 Rails 教程中的步骤: http://www.youtube.com/watch?v=tUH1hewXnC0
如果您搜索到 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 server --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。)
我在网上找不到任何类似问题的提及,但我可能只是没有在寻找正确的东西。有任何想法吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 form-for