模板文件未呈现Rails4中form_for的结果



我将在本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服务器——调试器一起使用。使用它让我走到了这一步:

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

因此,form_for正在被执行,但并没有以某种方式一直传递到输出html。(这就是为什么我不想向你展示我正确初始化@post的原因。)

我在网上找不到任何类似的问题,但我可能只是没有找到合适的东西。有什么想法吗?

您缺少=符号:<%= form_for @post do |f| %>

我一写完问题就想出来了(似乎总是发生在stackoverflow上!)

在form_for行,<%应改为<%=。

我想这在铁路上的某个时刻发生了变化?

最新更新