0

我有一个更大的方法,我想使用其中的一部分来获取数组值并将它们插入到链接中。我正在使用该方法在我正在自定义的应用程序的元数据中生成链接字段。完整的方法如下:

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”部分遇到问题。返回链接适用于数组中的第一个值,但会停止。我最喜欢的是每个链接后跟一个换行符,但我显然混淆了语法。

我希望这是有道理的。

4

2 回答 2

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
于 2012-05-29T19:13:56.710 回答
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
于 2012-05-29T19:16:43.073 回答