content_tag 输出意外结果
content_tag outputs unexpected results
我的助手中有一个方法可以循环遍历 activerecord 对象数组并打印每个项目的 p 标签。
def tutor_work_exp(application)
work_exps = application.work_exps
if work_exps.present?
work_exps.collect do |work_exp|
content_tag :p do
work_exp.detail
end
end
end
end
我已经阅读了 rails api,有人提到我不应该为 content_tag 使用 each 方法,而是使用 collect 方法。但是,我得到的结果是一个包含多个字符串的数组,如下所示:
["<p>25 years of selling stuffs</p>", "<p>15 years of selling books and electronic stuffs</p>"]
不确定我在这里做错了什么。
这是我在视图中调用辅助方法的方式(顺便说一句,我正在使用 haml):
.item
.content
.header
%p Work Exp:
.description.m-mini--top
= tutor_work_exp(@application)
tutor_work_exp(@application)
returns 一个数组。因此,在视图中使用每个循环来输出数组 tutor_work_exp(@application)
.
的内容
好的,我通过将 content_tag 方法包装在 concat 方法中解决了这个问题,如下所示:
application.work_exps.each do |work_exp|
concat(content_tag(:p, work_exp.detail))
end
然而,现在它还打印了所有activerecord对象的详细信息,但我认为这是另一个问题。
我得到的解决方案来自 thoughtbot
更新:
好的,我知道为什么它还会将对象的详细信息打印到视图中。就是因为这行代码:
=tutor_work_exp(@application)
基本上,each 方法会自动 return调用它的对象本身。在我这里的例子中,它是一个 activerecord 对象数组,=
将打印 return 的任何对象并将其放入视图中。大家可以参考更多.
所以,我将其更改为:
- tutor_work_exp(@application)
现在完美运行。
我的助手中有一个方法可以循环遍历 activerecord 对象数组并打印每个项目的 p 标签。
def tutor_work_exp(application)
work_exps = application.work_exps
if work_exps.present?
work_exps.collect do |work_exp|
content_tag :p do
work_exp.detail
end
end
end
end
我已经阅读了 rails api,有人提到我不应该为 content_tag 使用 each 方法,而是使用 collect 方法。但是,我得到的结果是一个包含多个字符串的数组,如下所示:
["<p>25 years of selling stuffs</p>", "<p>15 years of selling books and electronic stuffs</p>"]
不确定我在这里做错了什么。 这是我在视图中调用辅助方法的方式(顺便说一句,我正在使用 haml):
.item
.content
.header
%p Work Exp:
.description.m-mini--top
= tutor_work_exp(@application)
tutor_work_exp(@application)
returns 一个数组。因此,在视图中使用每个循环来输出数组 tutor_work_exp(@application)
.
好的,我通过将 content_tag 方法包装在 concat 方法中解决了这个问题,如下所示:
application.work_exps.each do |work_exp|
concat(content_tag(:p, work_exp.detail))
end
然而,现在它还打印了所有activerecord对象的详细信息,但我认为这是另一个问题。 我得到的解决方案来自 thoughtbot
更新: 好的,我知道为什么它还会将对象的详细信息打印到视图中。就是因为这行代码:
=tutor_work_exp(@application)
基本上,each 方法会自动 return调用它的对象本身。在我这里的例子中,它是一个 activerecord 对象数组,=
将打印 return 的任何对象并将其放入视图中。大家可以参考更多
所以,我将其更改为:
- tutor_work_exp(@application)
现在完美运行。