嵌套哈希参数有问题。产品有很多功能。假设产品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之间的功能名称 - 不确定为什么功能名称没有显示。
答案 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 %>
不确定为什么内联不起作用,但这解决了它。在初始问题之外需要一些额外的上下文,这在当时我没有意识到。道歉并感谢所有人。