我将content_tag的问题变成了帮助器,这段代码
def renderize(place_holder)
content_tag(:div, "hello") do
@raw_estimate.field_estimates.where(:field_position_id => FieldPosition.where(:place_holder => place_holder).first).each do |field|
if field.field_type.alias == "input"
content_tag :div do
field.is_validate ? label_value = "*#{field.name}" : label_value = field.name
content_tag(:label_tag, label_value) +
text_field_tag("estimate[field_#{field.name.downcase.gsub(/\W+/, '')}]")
end
end
end
end
end
不归还任何东西,我错过了什么? 谢谢
答案 0 :(得分:1)
不要将每个用于交互数组,使用collect将返回已呈现标记的数组,请参阅http://apidock.com/rails/ActionView/Helpers/TagHelper/content_tag以获取最后几条评论
答案 1 :(得分:0)
这一行很可疑:
:field_position_id => FieldPosition.where(:place_holder => place_holder).first
据我所知,左边部分是id,右边部分返回对象FieldPosition,而不是id。这就是为什么没有返回任何对象,你的助手没有内容。
答案 2 :(得分:0)
如另一个答案中所提到的,使用每个都不起作用 - 它不会返回块的内部内容。举个例子,尝试在irb中运行它:
result = 1.upto(3) do |x| x; end
结果将为“1”
这是对您的代码进行更清晰的测试,尝试并查看 - 它不会返回任何内容:
def random_test
content_tag(:div, "hello") do
1.upto(3) do |x|
content_tag(:p, x)
end
end
end
相反,您需要收集迭代器的输出,这些内容如下:
def random_test
content_tag(:div, "hello") do
1.upto(3) do |x|
content_tag(:p, x)
end
end
end