Я воссоздаю шаги из этого руководства по рельсам: 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.)
Я не могу найти упоминаний о подобных проблемах в Интернете, но я, вероятно, просто не ищу нужные вещи. Любые идеи?