[英]RANSACK GEM - Searching with Associations - Rails 4
任何幫助和建議將不勝感激。
使用GEM搜查包,我試圖顯示公司中所有男性招聘人員(用戶),但我不確定公司控制器中“招聘人員”行動所需的代碼-無論如何,幫助和建議將不勝感激。 以下是我的文件:
楷模:
user.rb
class User < ActiveRecord::Base
belongs_to :company
belongs_to :category_gender
end
company.rb
class Company < ActiveRecord::Base
has_many :users
end
category_gender
class CategoryGender < ActiveRecord::Base
has_many :users
end
Companies_controller.rb
class CompaniesController < ApplicationController
respond_to :html, :xml, :json
before_action :set_company, only: [:show, :edit, :update, :destroy]
# load_and_authorize_resource
........
def recruiters
@search = Company.search(params[:q])
@companies = @search.result.includes(:users)
@user = current_user
@company = @user.company
end
end
routes.rb
Rails.application.routes.draw do
resources :companies do
resources :comments, only: [:create, :destroy]
member do
get 'recruiters'
end
end
devise_for :users
resources :users do
resources :comments, only: [:create, :destroy]
resources :adverts
resources :blogs
member do
get 'applications'
get 'applicants'
get 'settings'
get 'dashboard'
get 'management'
end
end
招聘人員.html.erb(意見檔案):
<%= search_form_for @search, url: recruiters_company_path do |f| %>
<div>
<h3>gender</i></h3>
<ul>
<% CategoryGender.all.each do |gender| %>
<li>
<%= check_box_tag('q[category_gender_name_eq_any][]', gender.name) %>
<%= gender.name %> (<%= gender.users.count %>)
</li>
<% end %>
</ul>
</div>
<button><%= f.submit 'search' %></button>
<% end %>
由於您正在搜索用戶。 然后,應在用戶模型而不是公司模型上調用.ransack
方法。
在recruiters
方法中嘗試以下方法:
def recruiters
@company = Company.find(params[:id])
@users = User.ransack(params[:q]).result.where(company: @company)
@user = current_user
end
第一行:我使用@company = Company.find(params[:id])
而不是@company = @user.company
因為您正在使用Company
resources
路徑,其中recruiter
方法是(如您所定義的)“成員”在您的routes.rb中)。
@user.company
的問題是,例如,某用戶瀏覽/companies/1/recruiters
,將要分配的@company
將與瀏覽/companies/3/recruiters
時的相同。 但按照慣例,由於id
更改,這兩個路徑中的@company
應該已經不同。
第二行:我剛剛添加了謂詞.where(company: @company)
以便將結果過濾到相應的公司。
然后,在您的recruiters.html.erb
視圖文件中,只需添加如下內容:
...
...
<% @users.each do |user| %>
<%= user.name %>
<% end %>
...
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.