Файл шаблона не отображает результат form_for в Rails 4

Я воссоздаю шаги из этого руководства по рельсам: 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.

Я вставил эту строку отладчика, чтобы использовать гем отладчика с 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.)

Я не могу найти упоминаний о подобных проблемах в Интернете, но я, вероятно, просто не ищу нужные вещи. Любые идеи?


person Ben Wheeler    schedule 20.11.2013    source источник


Ответы (2)


Вы пропустили знак =: <%= form_for @post do |f| %>

person Andrei    schedule 20.11.2013
comment
это изменилось в какой-то момент в рельсах? в этом руководстве youtube.com/watch?v=zG_mvp8u4cI не используется знак равенства , и, кажется, работает нормально. - person Ben Wheeler; 21.11.2013
comment
@BenjaminWheeler Он был представлен в Rails 3. Источник: asciicasts.com/episodes /208-erb-блоки-в-рельсах-3 - person Andrei; 21.11.2013

Я понял это, как только закончил писать вопрос (кажется, всегда происходит в stackoverflow!)

В строке form_for вместо ‹% должно быть ‹%= .

Я полагаю, что это изменилось в какой-то момент в рельсах?

person Ben Wheeler    schedule 20.11.2013
comment
Чем это отличается от ответа @Andrei? - person crthompson; 20.11.2013
comment
похоже, что мы с ним отправили ответы одновременно - person Ben Wheeler; 21.11.2013