Ruby哈希可以在其值内包含一个数组吗?

时间:2019-01-05 07:37:19

标签: ruby-on-rails hash

我需要按类别显示产品列表。我当时想建立一个以类别为关键的has,并以该类别的价值来构建该类别中所有产品的清单。这样可以实现吗?

这项工作吗?

@products = Product.all

@categories = @products.uniq.pluck(:category)
@products_by_category = Hash.new

@categories.each do |category|
  @products_by_category[:category] = Product.where(:category => category)
end

我用它在我的视频中显示以上哈希值:

<% @products_by_category.each do |key, value| %>
<th> <%= key %> <th>
  <% value.each do |product| %>
    <tr>
      <td><%= product.title %></td>
      <td><%= product.category %></td>
      <td><%= product.rating %></td>
      <td><%= link_to 'Show', product, :class => "btn btn-primary"%></td>
      <td><%= link_to 'Edit', edit_product_path(product), :class => "btn btn-primary" %></td>
      <td><%= link_to 'Destroy', product, method: :delete, data: { confirm: 'Are you sure?' }, :class => "btn btn-primary" %></td>
    </tr>
  <% end%>
<% end %>

但是在显示而不是类别名称中,我只得到字符串文字“ category”(<th> <%= key %> <th>似乎打印了字符串文字“ category”而不是类别的值)

2 个答案:

答案 0 :(得分:1)

应该可以,但是有一种更简单的方法

@RequestMapping(value = "/html/login",method = RequestMethod.POST)
public ModelAndView getPersonalPage(@RequestParam("userName") String username,
        @RequestParam("password") String password)
{
     if(userService.authenticateUser(username, password) == true)
     {
         ModelAndView modelView = new ModelAndView();
         modelView.setViewName("home");
         modelView.addObject("user", username);
         modelView.addObject("iframe_src",
            "personal.html");
         return modelView;
     }
     else
     {
         return null;
     }
}

答案 1 :(得分:0)

使用@products_by_category[category]代替@products_by_category[:category]对我来说非常合适!感谢@Vasilisa提供此解决方案!