当前位置: 首页 > 知识库问答 >
问题:

来自each循环的嵌套散列的RoR - Link_to

向实
2023-03-14

嵌套哈希参数有一些问题。这个产品有许多特点。假设产品1具有功能foo和baz。

我想通过产品和所有功能来查询link_to中的字符串参数,这样它最终看起来像这样:

"/小狗/新?特征[baz]=qux

我目前正在尝试这个,它会出现语法错误,原因可能对不是我的人来说很明显。

<% 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 %>

知道我在干什么蠢事吗?

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

<代码>

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

/puppies/new?特征[]=3

我只是缺少了[和]之间的功能名称-不知道为什么没有显示功能名称。

共有2个答案

龙承德
2023-03-14

固定的将创建散列拉入模型

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 %>

不知道为什么内嵌不工作,但这修复了它。除了最初的问题之外,我还需要一些额外的背景知识,这是我当时没有意识到的。向所有人道歉和感谢。

益富
2023-03-14

您需要使用map而不是每个。每一个都返回其正在操作的原始数组本身。而map返回块中的元素。

 类似资料:
  • 我有一个这样的数组 我想做的是前面的模型,为其数量绘制徽标,因此三星=3,索尼=7,以此类推,将绘制3个索尼徽标和7个三星徽标。 我想出了这样的办法 但是当然,所有这些都是为了每个数组条目,呼应出名称,所以我最终打印了5个三星,打印了5个索尼,等等。 如何使其使用 qty 数组的值而不是条目数?

  • 问题内容: 我需要在Robot框架中创建一个嵌套循环。你能帮我吗? 我需要一个嵌套循环,将所有循环与文件中的所有循环进行比较。 提前致谢 问题答案: RF中没有嵌套循环;这只能通过在外部的内部循环调用一个关键字来完成。 不过,在您的特定情况下,可以不使用它-因为您想匹配整行,所以可以通过“应包含”来实现: 如果您要进行部分比赛-即成为会员的一部分,那么就不可能这样。

  • 我用C写了一个brainfuck解释器。这个程序有链表的实现,链表存储brainfuck指令,堆栈存储brainfuck的“[”指令。 我认为我的程序并不是在所有情况下都支持嵌套循环。这很荒谬,但这个brainfuck程序可以正确地使用我的Interpeter并打印“Hello World!”到stdout: 但该程序无法正常工作,并将内存错误打印到标准输出: 这两个例子适用于在线中断器-http

  • Python 不仅支持 if 语句相互嵌套,while 和 for 循环结构也支持嵌套。所谓嵌套(Nest),就是一条语句里面还有另一条语句,例如 for 里面还有 for,while 里面还有 while,甚至 while 中有 for 或者 for 中有 while 也都是允许的。 当 2 个(甚至多个)循环结构相互嵌套时,位于外层的循环结构常简称为 外层循环或 外循环,位于内层的循环结构常简

  • 这是我的代码。我遇到的问题是,我希望将HP在我的PHP代码中的数字转换为我的HP HTML代码,以及与Cylinder相同的内容。我已经想好了其他的东西,但说到这一部分我就卡住了

  • 本文向大家介绍MATLAB嵌套循环,包括了MATLAB嵌套循环的使用技巧和注意事项,需要的朋友参考一下 示例 可以嵌套循环,以在另一个迭代任务中执行迭代任务。考虑以下循环: 我们使用2个迭代器来显示abc和中元素的所有组合1:m,从而得出: 我们还可以使用嵌套循环来组合每次要完成的任务和几次迭代中要完成的任务: 这里我们要计算所有的斐波那契数列,但是n每次只显示第一个元素,所以我们得到 我们可以做