我正在尝试在coach_index
中创建搜索。用户有一个布尔管理属性,用于确定他们是否是教练。教练索引显示全部Users.where(admin: true)
。我正在尝试创建一个搜索教练但铁路不断返回错误...
PG::UndefinedColumn: ERROR: column users.conditions does not exist LINE 1: ...rs".* FROM "users" WHERE "users"."admin" = $1 AND "users"."c... ^ : SELECT "users".* FROM "users" WHERE "users"."admin" = $1 AND "users"."conditions" IN ('username LIKE ? OR city LIKE ? OR state LIKE ? OR zip LIKE ? OR first_name LIKE ? OR last_name LIKE ?', '%asdf%', '%asdf%', '%asdf%', '%asdf%', '%asdf%', '%asdf%') LIMIT $2 OFFSET $3
def self.search_coach(search)
if search
where(admin: true, conditions: ['username LIKE ? OR city LIKE ? OR state LIKE ? OR zip LIKE ? OR first_name LIKE ? OR last_name LIKE ?', "%#{search}%", "%#{search}%", "%#{search}%", "%#{search}%", "%#{search}%", "%#{search}%"] )
else
where(admin: true)
end
end
<div class="input-group" style="margin: auto">
<%= form_tag coach_index_users_path, method: 'get', class: 'navbar-form', role: 'search', id: "search-form" do %>
<span class="input-group-btn">
<%= submit_tag "Search", name: nil, class: 'btn btn-default' %>
<%= text_field_tag :search, "", placeholder: "Search coaches", class: 'form-control' %>
</span>
<% end %>
</div>
def coach_index
@coaches = User.search_coach(params[:search]).page(params[:page]).per_page(10)
@hash = Gmaps4rails.build_markers(@coaches) do |coach, marker|
marker.lat coach.latitude
marker.lng coach.longitude
marker.infowindow "#{coach.first_name}#{coach.last_name} (#{coach.username}) | <a href=mailto:#{coach.email}>#{coach.email}</a> | #{coach.city}, #{coach.state} #{coach.zip}"
end
end
我陷入了撬中,看起来搜索正在找回错误的对象,但我不确定原因。
4: def coach_index
5: @coaches = User.search_coach(params[:search]) #.page(params[:page]).per_page(10)
=> 6: binding.pry
7: @hash = Gmaps4rails.build_markers(@coaches) do |coach, marker|
8: marker.lat coach.latitude
9: marker.lng coach.longitude
10: marker.infowindow "#{coach.first_name}#{coach.last_name} (#{coach.username}) | <a href=mailto:#{coach.email}>#{coach.email}</a> | #{coach.city}, #{coach.state} #{coach.zip}"
11: end
12: end
[1] pry(#<UsersController>)> @coaches
User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."admin" = $1 AND "users"."conditions" IN ('username LIKE ? OR city LIKE ? OR state LIKE ? OR zip LIKE ? OR first_name LIKE ? OR last_name LIKE ?', '%Mariela%', '%Mariela%', '%Mariela%', '%Mariela%', '%Mariela%', '%Mariela%') [["admin", true]]
=> #<User::ActiveRecord_Relation:0x3fe8fa4f3be8>
[2] pry(#<UsersController>)> @coaches.class
=> User::ActiveRecord_Relation
[3] pry(#<UsersController>)>
答案 0 :(得分:1)
试试这个:
def self.search_coach(search)
if search
where('admin AND (username LIKE ? OR city LIKE ? OR state LIKE ? OR zip LIKE ? OR first_name LIKE ? OR last_name LIKE ?)', "%#{search}%", "%#{search}%", "%#{search}%", "%#{search}%", "%#{search}%", "%#{search}%" )
else
where(admin: true)
end
end
这可能是因为有效记录认为condition
就像您的表格属性中的admin
一样。