gpt4 book ai didi

ruby-on-rails - 对同类的多个元素使用 content_tag 的通用方法

转载 作者:数据小太阳 更新时间:2023-10-29 07:56:56 26 4
gpt4 key购买 nike

我想生成类似的 html,

<label for='field'>
Label Text
<span class='span1'> Some Text 1 </span>
<span class='span2'> Some Text 2 </span>
...
</label>

我想要一个 helper ,比如,

label_for 'field', :label => 'Label Text', :type1 => 'Some Text 1', :type2 => 'Some Text 2'

为此我尝试做类似的事情,

 content_tag(:label, opts[:label], :for => field_name) do
['span1', 'span2'].map { |i|
content_tag(:span, opts[i], :class => i) if opts[i] }.compact.joins('+').html_safe
}
end

但这行不通(当然)。

['span1', 'span2'] 数组是固定的,用户可以选择根据需要显示尽可能多的跨度。

我该如何解决这个问题?

最佳答案

为什么不是这样的呢?

def special_label_for(field_name, label_text, span_array)
content_tag "label", :for => field_name do
concat label_text
span_array.each_with_index do |span_content, index|
concat content_tag("span", span_content, :class => "span" + index.to_s)
end
end
end

special_label_for :user_name, "User Name", ["This is the first Span", "And this is the second Span", "Can also have a third span", "Or as many spans as you like"]

尚未测试此代码,可能需要添加/删除 concathtml_safe 才能使其在您的 View 中正确呈现。

关于ruby-on-rails - 对同类的多个元素使用 content_tag 的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11255297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com