1
我終於想出瞭如何實現pg_search的multisearch功能。如何將PGSeaerch結果鏈接到嵌套資源中的索引頁?
但是我在製作可用的搜索頁面時遇到了麻煩,該頁面顯示鏈接回到適當的嵌套頁面。
如何傳遞正確的ID以便我可以鏈接到嵌套的視圖。
因此,像這樣的link_to
myapp.com/artists/1/albums
到目前爲止,我得到這個錯誤(我似乎無法通過藝術家ID)
No route matches {:controller=>"albums", :artists=>nil}
新到Rails請幫助:)
控制器
個class ResultsController < ApplicationController
def index
@results = PgSearch.multisearch(params[:query]).paginate(:page => params[:page])
@artists = PgSearch.multisearch(params[:query]).where(searchable_type: "Artist")
@albums = PgSearch.multisearch(params[:query]).where(searchable_type: "Album")
end
end
VIEWS
<% if @results.any? %>
<% if @artists.any? %>
<div class="maintitle">Artists</div>
<% @results.each do |pg_results| %>
<% if pg_results.searchable_type == "Artist" %>
<div class="span3">
#### How can I link to the Albums index page
<%= link_to pg_results.searchable.name,
artist_albums_path(@artists) %>
</div>
<% end %>
<% end %>
<% end %>
<% if @albums.any? %>
<div class="maintitle">Albums</div>
<div class="row">
<% @results.each do |pg_results| %>
<% if pg_results.searchable_type == "Album" %>
####How can I link to the Albums index page
<%= link_to pg_results.searchable.name, %>
<% end %>
<% end %>
</div>
<% end %>
<% end %>
MODELS
class Artist < ActiveRecord::Base
attr_accessible :name
has_many :albums
has_many :songs, :through => :albums
include PgSearch
multisearchable :against => [:name],
using: {tsearch: {dictionary: "english"}}
end
class Album < ActiveRecord::Base
attr_accessible :name, :artist_id
belongs_to :artist
has_many :songs
include PgSearch
multisearchable :against => [:name],
using: {tsearch: {dictionary: "english"}}
associated_against: {artist: [:artist_id, :name]}
end
ROUTES
Music::Application.routes.draw do
resources :artist do
resources :albums
end
resources :results
end
SCHEMA
create_table "pg_search_documents", :force => true do |t|
t.text "content"
t.integer "searchable_id"
t.string "searchable_type"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end