我正在構建一個RailsApp,用戶可以通過f.select
在views/profiles/_form.html.erb
中聲明他們的:buisness_type
。Current_user如何根據與current_user相同的類別過濾其他用戶?
然後在views/users/show.html.erb
current_user
可以輸入汽車在input_field行駛的值。
我想要做的就是讓current_user根據其buisness_type過濾掉其他用戶。因此,current_user可以在views/users/show.html.erb
中查看同一:business_type
中其他用戶car_trip的平均值。
在views/profiles/_form.html.erb
我有這樣的代碼得到保存在Profile.rb
模式:
<div class="form-group">
<%= f.label :buisness_type %>
<%= f.select(:buisness_type, grouped_options_for_select(Profile::BUISNESS_TYPES),{ :class => 'form-control' })%>
</div>
而在views/users/show.html.erb
I'm渲染此部分:
<%= form_for @transport, html: {class: 'form-horizontal'} do |f| %>
<div class="control-group">
<%= f.label :Transport_type, class: 'control-label' %><br>
<div class="controls">
<%= f.select(:transport_type, options_for_select(Transport::TRANSPORT_TYPES)) %>
</div>
</div>
<div class="control-group">
<%= f.label :Trip_length_km, class: 'control-label' %><br>
<div class="controls">
<%= f.number_field :transport_km %>
</div>
</div>
<div class="control-group">
<%= f.label :Number_of_trips, class: 'control-label' %><br>
<div class="controls">
<%= f.number_field :transport_num_of_trips %>
</div>
</div>
<div class="control-group">
<%= f.label :Recycled_fuel, class: 'control-label' %><br>
<div class="controls">
<%= f.number_field :transport_km_recycled_fuel %>
</div>
</div>
<div class="control-group">
<div class="controls">
<%= f.submit class: 'btn btn-xs btn-warning' %>
</div>
</div>
<% end %>
<%= link_to 'Back', transports_path %>
</div>
I'm也呈現這種專欄圖表views/users/show.html.erb
這是一張Chartkicks圖表。
<div class="col-md-6 chart-box">
<%= column_chart [
{name: "CarTrips #{current_user.profile.name}", data: current_user.transports.group(:transport_type).sum(:transport_km)},
{name: "CarTrips Everyone Median", data: Transport.group(:transport_type).average(:transport_km)}], { stacked: true, height: "300px", xtitle: "CarTrips", ytitle: "Km/CarTrips"} %>
</div>
正如你可以看到我能夠無論顯示每個用戶平均一趟車在他們是在什麼樣的企業。我怎樣才能讓CURRENT_USER只能看到其他的汽車出行平均用戶在相同的業務類型,他們在???這甚至是可能的。
在users_controller.rb
我在show
方法已經本
def show
@user = User.find(params[:id])
@users = User.order('created_at DESC').paginate(page: params[:page], per_page: 30)
@transport = current_user.transports.build
end
模型中加入
這是user.rb
模型
class User < ActiveRecord::Base
has_one :profile
accepts_nested_attributes_for :profile
def average_transport_types
self.transports.group(:transport_type).sum(:transport_km)
end
end
這是profile.rb
模型
class Profile < ActiveRecord::Base
belongs_to :user
end
謝謝,我得到它,但它給了我這個錯誤'未定義的方法「business_type」爲#<用戶:0x007f804a7b9c70 >' – DaudiHell
Can not I just do it like like' @ bus_type = User.where(:buisness_type => current_user.profile.buisness_type).order('created_at DESC')。paginate(page:params [:page],per_page :30)''但我不知道如何將'@ bus_type'整合到Column_Chart – DaudiHell
當然,但我不會打電話是'@ bus_type' - 那個名字並不反映你在做什麼......哪個正在拔出一批新的用戶,並通過業務類型進行過濾。我傾向於把它稱爲'@ users_by_business_type'或類似的東西......明確指出你的命名是對你未來的自我友善的回憶:) –