gpt4 book ai didi

ruby-on-rails - 使用 group_by 的简单 Rails 3.1 View

转载 作者:行者123 更新时间:2023-12-04 05:43:42 25 4
gpt4 key购买 nike

我在我工作的网站上有一个菜单,食物菜单。表中的每条记录还包含一个类别字段。此类别可以是汉堡、点心、饮料或任何其他他们想要用来对食品进行分类的东西。

我正在尝试显示菜单,其中的项目按此类别字段分组。到目前为止我的尝试:

food_item_menus_controller.rb
...
def food_list
@foods = FoodItem.all
@food_list = @foods.group_by { |t| t.category }
end


views/food_item_menus/index.html.haml
= @food_list.group_by (@food_items.category).each do |food_list|
%p
= food_list.name
%ul
- for food_items in food_items
%li
= food_items.name

我的错误是我有一个 nil 对象。我想我给@foods 的电话没有返回任何内容。

models/food_item.rb
class FoodItem < ActiveRecord::Base
has_many :menus, :through => :food_item_menus
has_many :food_item_menus
end

我是不是设置错了什么?或者我的想法是错误的,如果我在 View 中调用@foods,它实际上并没有调用我在 Controller 中设置的变量?我越想弄清楚这一点,我就越对一切感到困惑,包括基础知识。

最佳答案

你的 View 代码全是错误,应该是这样的:

= @food_list.each do |category, food_items|
%p
= category
%ul
- food_items.each do |food|
%li
= food.name

错误分解:

  • @food_list.group_by(@food_items.category).each |food_list|
    - 你还没有在任何地方给 @food_items 赋值; @food_list 被分配为 Controller 中 group_by 调用的结果,因此在这里您调用了两次; group_by 返回一个散列,因此您的每个 block 都应该有两个参数,而不是一个。
  • for food_items in food_items - 迭代变量和迭代器使用相同的变量名; food_items 未在任何地方赋值。

关于ruby-on-rails - 使用 group_by 的简单 Rails 3.1 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8031317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com