我在Rails中從ERB遷移到HAML時有一個簡單的視圖。這個視圖呈現一個嵌套的表單,但包含一個空的子對象,它沒有任何現有的子對象。將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
這簡直是同樣的事情,但該局工作和HAML,雖然它的工作原理,它也打印#<Answer:0xb159004>
附近的形式,這我不知道如何擺脫。
我做錯了什麼或者這是HAML限制/錯誤?有什麼解決方法嗎?
你可以在你的answer_fields模板文件中發佈代碼嗎? – Magicmarkker
嗨@Magicmarkker,上面的代碼只是一個例子來顯示這種奇怪的行爲。對於這個例子,我實際上使用了一個來自[railscast 196](http://railscasts.com/episodes/196-nested-model-form-revised)的簡單例子來說明這個問題。即使沒有fields_for或渲染線,HAML仍會顯示'#<....>'字符串。 –
好的,我修好了。我只需要將從「=」開始的行替換爲「 - 」,這樣HAML就不會插入輸出!不管怎麼說,還是要謝謝你! –