Я часами искал это и не нашел решения, которое мне подходит. Я тоже новичок в этом.
В настоящее время у меня есть поле поиска, которое работает.
но я хочу добавить отдельную функцию, в которой вы можете щелкнуть ссылку, категорию, чтобы затем отобразить продукты в этой категории.
Списки Контроллер (продукты):
def index
@listings = Listing.all
if params[:search]
@listings = Listing.search(params[:search]).order(created_at: :desc)
else
@listings = Listing.all.order(created_at: :desc)
end
@categories = Category.all
end
listing.rb
модель:
belongs_to :user
belongs_to :category, required: false
attr_accessor :new_category_name
before_save :create_category_from_name
def create_category_from_name
create_category(name: new_category_name) unless new_category_name.blank?
end
def self.search(search)
where("name LIKE ?","%#{search}%")
end
Категория модели:
has_many :listings
CATEGORY = %w{ cat1 cat2 cat3 cat4 }
Вид:
<% @categories.each do |cat| %>
<%= link_to cat.name, listings_path(:category_id => @listings) %>
<% end %>
Вот моя схема (список и категория):
create_table "categories", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "listings", force: :cascade do |t|
t.string "name"
t.text "description"
t.decimal "price"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "image"
t.integer "user_id"
t.integer "category_id"
t.index ["category_id"], name: "index_listings_on_category_id"
end
Либо мой контроллер, либо мой взгляд неверен.Я предполагаю, что мой контроллер должен быть определен больше .. как я могу это сделать?