這對於一個經驗豐富的程序員來說可能是一件容易的事情,但是由於我正在積累經驗,所以似乎我堅持這個...請幫助!使用.map函數在Rails應用程序中給出PG :: GroupingError:ERROR:列「materials.id」
我通過構建一個應用程序學習軌道上的紅寶石。 我爲我的用戶使用f.select
來選擇他們使用的某種類型的材料。 然後用戶可以爲每種材料插入一定量的重量。那部分工作正常。
然後,我希望用戶能夠看到他有多少公斤使用視圖中每個材料被稱爲「意見/頁/ home.html.erb」
我能夠顯示總的金額:material_weight
在視圖中,但是當我想通過使用.map
和.group
顯示:material_weight
分類MATERIAL_TYPES
。軌拋出回這個錯誤:
PG::GroupingError: ERROR: column "materials.id" must appear in the GROUP BY clause or be used in an aggregate function LINE 1: SELECT "materials".* FROM "materials" WHERE "materials"."user_id" = $...^: SELECT "materials".* FROM "materials" WHERE "materials"."user_id" = $1 GROUP BY "materials"."material_type"
在pages_controller.rb
我一些需要如何分類的權重爲每個material_type用戶選擇@material_heavy
線,但我不知道該怎麼辦那。 誰能請告訴我
EDITED@material_heavy線
類PagesController < ApplicationController的
def home
@materials = current_user.materials
@material_heavy = current_user.materials.group(:material_type).map { |mt| mt.(['Heavy'].group.sum(:material_weight)) }
end
end
在我material.rb
模型我有那朵片斷
class Material < ActiveRecord::Base
MATERIAL_TYPES = [['Heavy'], ['Medium'], ['Mild'], ['Soft']]
end
添加的材料表 schema.rb
create_table "materials", force: :cascade do |t|
t.string "material_type"
t.decimal "material_weight"
t.decimal "material_cost"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "date"
end
這裏 材料部分是輸入形式進行的f.select
位於
<div class="field">
<%= f.label :date, class: 'form-text'%>
<%= f.date_select :date %>
</div>
<br />
<div class="field">
<%= f.label :material_type %>
<%= f.select(:material_type, options_for_select(Material::MATERIAL_TYPES)) %>
</div>
<br>
<div class="field">
<%= f.label :material_weight %> :<%= f.number_field :material_weight, class: 'form-fields' %> -kg.
</div>
<br />
<div class="field">
<%= f.label :material_cost %> :
<%= f.number_field :material_cost, class: 'form-fields' %> -Kr.
</div>
<br>
<div class="actions">
<%= f.submit "Add Material" %>
</div>
<% end %>
問題是'current_user.materials.group(:material_type)'將返回一個哈希,但是':material_weight'看起來並不是哈希中的一個鍵,所以'sum(:material_weight)'不起作用。 –
是的,我明白,但我不確定如何查看每種材料類型的總重量? – Slowboy
「材料」表的外觀如何? –