我的架构如下:
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
的{{1}}中有一些代码,这些代码从视图文件中获取了一些参数:
#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。这也可能是完全笨拙的方式。
答案 0 :(得分:0)
是的,您可以根据这些成分找到数据
def index
if params[:order] = true
Recipe.left_joins(:ingredients).group(:id).order('COUNT(ingredients.id) DESC')
else
@recipes = Recipe.all
end
end