Я создаю RailsApp, чтобы Пользователь мог объявить их :buisness_type
через f.select
в views/profiles/_form.html.erb
.Как Current_user фильтрует других пользователей на основе той же категории, что и current_user?
А затем в views/users/show.html.erb
current_user
может вводить значения для автомобильных поездок в поле ввода.
Что я хочу, чтобы дать возможность current_user отфильтровывать других пользователей на основе их: buisness_type. Таким образом, current_user может видеть в views/users/show.html.erb
Среднее значение для других пользователей car_trip в том же :business_type
.
В 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
Это диаграмма диаграмм.
<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 только увидеть Average для автомобилей поездок другого пользователи в том же типе бизнеса, в котором они находятся? Это возможно.
В 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
Могу я просто сделать это так: @ bus_type = User.where (: buisness_type => current_user.profile.buisness_type) .order ('created_at DESC'). Paginate (страница: params [: page], per_page : 30) ', но я не уверен, как интегрировать' @ bus_type' в Column_Chart – DaudiHell
уверенно, хотя я бы не назвал '@ bus_type' - это имя не отражает то, что вы делаете ... что вытаскивает новый набор пользователей, фильтруется по бизнес-типу. Я был бы склонен называть его чем-то вроде '@ users_by_business_type' или схожим ... быть явным с вашим именем, чтобы быть добрым к вашей будущей самостоятельной прочтении этого материала :) –