content_tag确实返回空白

时间:2011-07-21 14:29:15

标签: ruby-on-rails

我将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

不归还任何东西,我错过了什么? 谢谢

3 个答案:

答案 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