2016-09-12 63 views
0

我正在構建一個RailsApp,用戶可以通過f.selectviews/profiles/_form.html.erb中聲明他們的:buisness_typeCurrent_user如何根據與current_user相同的類別過濾其他用戶?

然後在views/users/show.html.erbcurrent_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 

回答

0

只需添加一個where到,拉出來的用戶,例如部分:

+0

謝謝,我得到它,但它給了我這個錯誤'未定義的方法「business_type」爲#<用戶:0x007f804a7b9c70 >' – DaudiHell

+0

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

+0

當然,但我不會打電話是'@ bus_type' - 那個名字並不反映你在做什麼......哪個正在拔出一批新的用戶,並通過業務類型進行過濾。我傾向於把它稱爲'@ users_by_business_type'或類似的東西......明確指出你的命名是對你未來的自我友善的回憶:) –