【问题标题】:Template file not rendering result of form_for in Rails 4模板文件未在 Rails 4 中呈现 form_for 的结果
【发布时间】: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


    【解决方案1】:

    您缺少= 符号:&lt;%= form_for @post do |f| %&gt;

    【讨论】:

    【解决方案2】:

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

    在 form_for 行,

    我想这在 Rails 中的某个时候发生了变化?

    【讨论】:

    • 这与@Andrei 的回答有何不同?
    • 看起来他和我同时发布了答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 2014-06-16
    相关资源
    最近更新 更多