Ruby 如果字段_中的块正在呈现HTML转义隐藏字段
这是一个带有HAML的Rails 3应用程序。 我有以下资料:Ruby 如果字段_中的块正在呈现HTML转义隐藏字段,ruby,ruby-on-rails-3,haml,Ruby,Ruby On Rails 3,Haml,这是一个带有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?
= 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'
= 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
'
'
领域
有什么想法吗?我修正了以下代码:
= 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'
通过这样做:
= f.fields_for :bar_memberships do |bar_membership_fields|
= ""
- if bar_membership_fields.object.new_record?
= 'FIELD'
如果有人知道原因,请告诉我。您必须在块的
字段中返回除nil
以外的内容
:
助手的#fields_为每条记录生成一个隐藏的输入字段,并将其添加到捕获块的结果中。通常,capture
的返回值将是一个SafeBuffer
,因此它不会被转义。但是,如果块没有向缓冲区写入任何内容,那么Haml将从capture
返回一个文本空String
。隐藏的输入元素被合并到这个字符串中,当它与其余的条目组合时,由于它是一个字符串
被添加到安全缓冲区
,所以它被转义