У меня есть вопрос.У меня есть две таблицы с отношением NN.Они прекрасно связаны в базе (проверено консолью с помощью Tips.find (1) .categories).Две таблицы: Совет и Категория.Моя цель - создать форму поиска, которая позволит вам выбрать категорию, и отобразить все подсказки, связанные с этой категорией.Я нашел метод, который делает это, он работает для базовых ссылок (т. Е. Если, например, в таблице Tip был category_id, а здесь это не так).Поэтому я должен найти способ написать следующее условие поиска:
Tip.rb
class Tip < ApplicationRecord
has_many :category_to_tips
has_many :categories, through: :category_to_tips
has_many :comments
belongs_to :creator, class_name: "User"
has_many :likes, dependent: :destroy
def self.search(params)
tips = Tip.where("(tips) LIKE ?", "%#{params[:search]}%") if params[:search].present?
tips
end
end
Tip_controller:
def index
@tip = Tip.all
@tip = Tip.joins(:categories).search(params[:search])
end
форма в index.html.erb:
<%= form_tag tips_path, :method => 'get' do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
И когда я запускаю свою форму, у меня появляется эта ошибка:
PG::SyntaxError: ERREUR: erreur de syntaxe sur ou près de « . »
LINE 1: ...ry_to_tips"."category_id" WHERE ((Category.find(2).tips) LIK...
^
: SELECT "tips".* FROM "tips" INNER JOIN "category_to_tips" ON "category_to_tips"."tip_id" = "tips"."id" INNER JOIN "categories" ON "categories"."id" = "category_to_tips"."category_id" WHERE ((Category.find(2).tips) LIKE '%2%')
Я надеюсь, что все ясно и заранее благодарю!:)