将动态属性添加到content_tag

时间:2014-02-28 15:51:18

标签: ruby-on-rails ruby tags

这似乎是一个非常简单的问题。假设我想检查动态条件,以便在某些Helper Module中添加某些属性:

def add_tag(hash)
    content_tag(:div, class: "some_class", rows: "#{check_rows(hash)}")
end

def check_rows(hash)
    hash[:rows].nil? ? "" : hash[:rows]
end

这很好用,但如果rows我不希望hash[:rows].nil?出现在生成的代码中。所以我尝试了这个

content_tag(:div, class: "some_class", "#{check_rows(hash)}")

   def check_rows(hash)
    hash[:rows].nil? ? "" : ":rows =>  hash[:rows]"
   end

但无法识别"#{check_rows(hash)}"。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

我认为你对content_tag方法的参数是错误的。试试这个:

def add_tag(hash)
    content_tag(:div, check_rows(hash), class: "some_class")
end

答案 1 :(得分:0)

替换

def add_tag(hash)
    content_tag(:div, class: "some_class", rows: "#{check_rows(hash)}")
end

def check_rows(hash)
    hash[:rows].nil? ? "" : hash[:rows]
end

def add_tag(hash)
   content_tag(:div, "#{check_rows(hash)}", class: "some_class")
end

def check_rows(hash)
   hash[:rows].nil? ? "" : {"rows" =>  hash[:rows]}
end

无法识别的原因是因为您将:rows => hash[:rows]作为字符串传递,而content_tag则需要哈希值。