Reputation: 590
This is what i have done so far
class Business < ApplicationRecord
has_many :locations
has_many :continent, through: :locations
...........
class Continent < ApplicationRecord
has_many :locations
has_many :businesses, through: :locations
..............
class Location < ApplicationRecord
belongs_to :continent
belongs_to :business
end
#search Form
<%= search_form_for @q do |f| %>
<%= f.select :continent_id_eq, options_from_collection_for_select(Continent.all.order(:name), :id, :name, @q.continent_id_eq), { }, {class: ''} %>
<%= f.search_field :name_cont %>
I have created records and given appropriate association.s In the form, when i select a continent from the list to query the businesses , it does not query. No errors are displayed
This this what i get from the search params
localhost:3000/businesses?q[continent_id_eq]=1&q[name_cont]=&commit=Search
This is the console log
Business Load (1.6ms) SELECT DISTINCT "businesses".* FROM "businesses" LEFT OUTER JOIN "locations" ON "locations"."business_id" = "businesses"."id" LEFT OUTER JOIN "continents" ON "continents"."id" = "locations"."continent_id" WHERE "continents"."id" = 3
What am i doing wrong
Upvotes: 3
Views: 1878
Reputation: 140
Since the Business
model has_many :continents
, you'll need to use plural continents
, so:
<%= f.select :continents_id_eq, options_from_collection_for_select(Continent.all.order(:name), :id, :name, @q.continent_id_eq), { }, {class: ''} %>
Upvotes: 4