pg_search с вложенными маршрутами

Я впервые установил pg_search и пытаюсь создать поиск по книгам и главам. Это вложенные маршруты.

routes.rb:

resources :books do
  resources :chapters, except: [:index]
end

Результаты pgsearch отображают ссылки на информацию, но ссылка на главы показывает /chapters/17, хотя должна отображать /books/50/chapters/17.

представление поискового индекса:

<h2>
 <%  @pg_searches.each do |pg_search| %>
  <p> <%= link_to pg_search.searchable.title, pg_search.searchable %> </p>
 <% end %>
<h2>

Контроллер поиска

class SearchesController < ApplicationController

 def index
  @pg_searches = PgSearch.multisearch(params[:query])
 end
end

chapter.rb

include PgSearch
 multisearchable :against => [:title, :body]

book.rb

include PgSearch
 multisearchable :against => [:title, :description]

Вот сообщение об ошибке:

Не удалось найти книгу без идентификатора

def show
 **@book = Book.find(params[:book_id])**
 @chapters = Chapter.all
 @chapter = Chapter.find(params[:id])
 @table_of_contents = @chapter.table_of_contents

Как получить правильные маршруты?


person jgrant    schedule 05.11.2015    source источник


Ответы (2)


Я думаю, что в вашем пути link_to отсутствует родительский объект, чтобы сформировать правильный URL-адрес. Поскольку маршрутизатору требуется URL-адрес в форме books/:id/chapters/:id , нам также необходимо передать link_to для главы объекта книги.

Попробуй это:

https://gist.github.com/MichaelCPell/08fb6af5c27b0466366f

person Michael Pell    schedule 06.11.2015

Я думаю, вам нужно попробовать поиск по ассоциациям или проверить аналогичные вопрос

person DmitrySharikov    schedule 05.11.2015
comment
Пробовал linked_against, по-прежнему получая те же результаты. - person jgrant; 05.11.2015