这是一个带有HAML的Rails 3应用程序。 我有以下内容:
= f.fields_for :bar_memberships do |bar_membership_fields|
= 'FIELD'
我已经解决了这个问题。此代码打印: 领域 领域 领域 如预期的那样。
但是以下代码:
= f.fields_for :bar_memberships do |bar_membership_fields|
- if bar_membership_fields.object.new_record?
= 'FIELD'
在源代码中呈现大量HTML转义隐藏输入,并在页面上显示它们!
'<input id="person_bar_memberships_attributes_0_id" name="person[bar_memberships_attributes][0][id]" type="hidden" value="824" />
<input id="person_bar_memberships_attributes_1_id" name="person[bar_memberships_attributes][1][id]" type="hidden" value="825" />'
FIELD
有什么想法吗?
答案 0 :(得分:0)
我修改了以下代码:
= f.fields_for :bar_memberships do |bar_membership_fields|
- if bar_membership_fields.object.new_record?
= 'FIELD'
通过做:
= f.fields_for :bar_memberships do |bar_membership_fields|
= ""
- if bar_membership_fields.object.new_record?
= 'FIELD'
如果有人知道为什么请告诉我。
答案 1 :(得分:0)
您必须在nil
区块中返回fields_for
以外的其他内容。
This issue has been fixed in Haml 4.0.4 by mattwildig:
#fields_for
助手为每条记录生成一个隐藏的输入字段,并将其添加到捕获块的结果中。通常,capture
的返回值为SafeBuffer
,因此不会对其进行转义。但是,如果块没有向缓冲区写入任何内容,则Haml会从String
返回文字空capture
。隐藏的输入元素与此字符串相连,当它与其他条目组合时,由于它是String
被添加到SafeBuffer
,它将被转义。