データベースからいくつかのアイテムを表示しようとしています。アルファベット順に並べ替える必要があります。これはループです:Railsモデルを配列にしないで並べ替えるにはどうすればよいですか?
@foods.where(category: "#{Food::CATEGORIES[cat]}").find_each do |food|
..............
end
は私が設定しようとしたdefault_scope:
何もしなかったし、このようにそれらを並べ替えてみましたdefault_scope { order(name: :asc) }
:「
@foods = @foods.sort_by{|food| food.name }
た後、私は言って例外をキャッチしていました'on array'のメソッドを使用できません。
EDIT:@foods定義:
class FoodsController < ApplicationController
before_action :set_food, only: [:show, :edit, :update, :destroy]
before_filter :authorize, only: [:create, :delete]
def index
@foods = Food.all
@food_categories = Food::CATEGORIES.keys.sort
# @current_category ||= params(:category)
end
....
end
EDIT:それは重要な場合は、ここでの食品カテゴリ:
CATEGORIES = { "Dairy & Eggs" => "Dairy",
"Meat & Fish" => "Animal",
"Fruits & Vegetables" => "Plant",
"Nuts, beans & legumes" => "Nuts",
"Grains" => "Grains",
"Drinks" => "Beverages",
"Sweets & Candy" => "Sweets",
"Oils & Fats" => "Oils",
"Other" => "Other"
}あなたが持っている
「@ foods」の定義に質問を追加できますか? –
2つ目は、Foodがアプリケーションのモデルである場合、Food.where(あなたの条件)を使用することができます.order(name::asc)、次に2番目のdefault_scopeは正しく適用する必要があります。コンソールからそれを使用しようとしていて、コンソールを再起動しなかったか、または再ロードしていませんか? – Waheedi
@foodsの定義を追加しました –