我有一个更大的方法,其中一部分我想用来获取数组值并将它们插入到链接中。我正在使用该方法在我正在定制的应用程序的元数据中生成链接字段。完整的方法如下:
def get_facet_from_datastream(resource, datastream_name, field_key, opts={})
if opts.has_key?(:values)
values = opts[:values]
if values.nil? then values = [opts.fetch(:default, "")] end
else
values = resource.get_values_from_datastream(datastream_name, field_key, opts.fetch(:default, ""))
if values.empty? then values = [ opts.fetch(:default, "") ] end
end
facet = field_key.to_a.join("_") + "_facet"
values.each do |v|
searchv = v.to_s.gsub(/ /, "+")
link = "<a href=\"http://development4/lcdl/catalog?f[#{facet}][]=#{searchv}\">#{v}</a>"
return link.html_safe
end
end
我在“values.each do
”部分遇到了问题。返回链接适用于数组中的第一个值,但在此处停止。我理想的是每个链接后跟一个换行符,但我显然混淆了语法。
我希望这是有道理的。
答案 0 :(得分:3)
是的,它会停止,因为您的return link.html_safe
区块中有each
。它返回values
数组的第一个值。
更新您的代码部分:
values.map do |v|
searchv = v.to_s.gsub(/ /, "+")
"<a href=\"http://development4/lcdl/catalog?f[#{facet}][]=#{searchv}\">#{v}</a>"
end.join.html_safe
答案 1 :(得分:1)
每个循环中都有一个return
语句。这将退出方法,在第一次传递时返回。
你可能想做这样的事情:
values.map do |v|
searchv = v.to_s.gsub(/ /, "+")
link = "<a href=\"http://development4/lcdl/catalog?f[#{facet}][]=#{searchv}\">#{v}</a>"
link.html_safe
end.join