Rails には、ERB から HAML に移行しているという単純なビューがあります。このビューはネストされたフォームをレンダリングしますが、既存の子オブジェクトがない場合は空の子オブジェクトが含まれます。
ERB では、次のようにしてこれを達成していました。
<%= form_for @question do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.object.answers.build if f.object.answers.empty? %>
<%= f.fields_for :answers do |builder| %>
<%= render 'answer_fields', f: builder %>
<% end %>
<%= f.submit %>
<% end %>
できます!しかし、HAML を使用して同じことを行うと、それも「機能」しますが、フォーム間に迷惑なテキストが出力されます#<Answer:0xb159004>
。
これは私のHAMLがどのように見えるかです:
= form_for @question do |f|
= f.label :name
= f.text_field :name
= f.object.answers.build if f.object.answers.empty?
= f.fields_for :answers do |builder|
= render 'answer_fields', f: builder
= f.submit
文字通り同じことですが、ERB は機能し、HAML は機能しますが#<Answer:0xb159004>
、フォームの近くにも印刷されます。これを取り除く方法はわかりません。
私は何か間違ったことをしていますか、それともこれは HAML の制限/バグですか? 回避策はありますか?