Моя схема выглядит следующим образом:
create_table "ingredients", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "recipe_ingredients", force: :cascade do |t|
t.integer "recipe_id"
t.integer "ingredient_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "recipes", force: :cascade do |t|
t.string "name"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
На моей индексной странице я хотел бы перечислить все рецепты, а затем либо иметь ссылку, либо кнопку, которая сортирует рецепты по количеству ингредиентов, которые есть у каждого рецепта.,Я играю с этим уже пару часов и становлюсь ближе, но, будучи новичком, мой мозг не совсем делает скачок.Прямо сейчас у меня есть некоторый код в RecipesController
в #index
, который принимает некоторые параметры из файла представления:
<%= button_to "sort by ingredient amount", {:controller => "index", :action => "update", :order => true}, :method=>:post %>
код в контроллере до сих пор выглядит примерно так:
def index
if params[:order] = true
Recipe.all.each do |r|
r.ingredients.each do |i|
???
end
end
else
@recipes = Recipe.all
end
end
Я не уверен, как использовать .order при доступе к ассоциации, такой как recipes_ingredients.
. Это также может быть совершенно нелепым способом сделать это.