RoR - Link_to与每个循环的嵌套哈希

时间:2016-01-05 00:27:59

标签: ruby-on-rails ruby ruby-on-rails-4 hash params

嵌套哈希参数有问题。产品有很多功能。假设产品1具有foo和baz的特征。

我希望将产品和所有功能都传递给link_to中的字符串参数,以便最终看起来像这样:

"?/小狗/新设有%5Bbaz%5D = qux&安培;设有%5Bfoo%5D =栏&安培;产品= 1"

我目前正在尝试此操作,因为对于不是我的人来说可能很明显的原因会出现语法错误。

<% Product.each do | product | %>
  <%= link_to(new_puppy_path(product: product, features: { product.features.each 
    { | feature| feature.name : 'feature.'} } ), class: 'slorp') do %>
    // stuff inside the link
  <% end %>
<% end %>

知道我在这里做的很蠢吗?

更新:我已将代码更新为:

<%= link_to(new_puppy_path(product: product, features: product.features.each{|feature| {feature.name.to_sym => feature.feature_colors.first}}), class: 'image') do %>

这更接近,因为我的输出网址现在是:

/小狗/新设有%5B%5D = 3及设有%5B%5D = 2及产物= 2

我只是错过了%5B和%5D之间的功能名称 - 不确定为什么功能名称没有显示。

2 个答案:

答案 0 :(得分:1)

您需要使用地图而不是每个每个返回正在运行的原始数组本身。虽然 map 会返回块中的元素。

答案 1 :(得分:0)

固定。拉出将哈希创建到模型中:

def reco_features
  list = Hash.new
  feature_colors.each do |feature_color|
      list[feature_color.feature.name] = feature_color.id
  end
  return list
end

然后更新了link_to:

<%= link_to(new_puppies_path(product: product, features: features.reco_features ), class: 'slorp') do %>

不确定为什么内联不起作用,但这解决了它。在初始问题之外需要一些额外的上下文,这在当时我没有意识到。道歉并感谢所有人。

相关问题