Как добавить поиск в макет, чтобы он мог искать посты на каждой странице сайта? такой как здесь на stackoverflow.
В учебных руководствах показано добавление метода поиска к действию index для PostsController, а затем добавление блока формы и результатов в views / post / index.html.erb.
Я пытался создать форму в application.html.erb, которая отправляет запрос get в поисковое действие контроллера posts. Кажется, я не могу понять, кто-то может объяснить, где я иду не так?
В настоящее время я получаю эту ошибку при переходе на мою домашнюю страницу:
NameError in Pages # home
неопределенная локальная переменная или метод `search_posts_path '
PostsController
def search
if params[:q]
query = params[:q]
@search = Post.search do
keywords query
end
@posts = @search.results
end
end
пост модель
searchable do
text :title, :default_boost => 2
text :content
end
routes.rb
match 'auth/:provider/callback' => 'authentications#create'
resources :authentications
devise_for :users, :controllers => {:registrations => 'registrations'}
resources :posts do
member do
get :likers, :search
end
end
resources :relationships, :only => [:create, :destroy]
resources :appreciations, :only => [:create, :destroy]
root :to => "pages#home"
match '/contact', :to => 'pages#contact'
match '/about', :to => 'pages#about'
match '/help', :to => 'pages#help'
match '/blog', :to => 'pages#blog'
resources :users do
member do
get :following, :followers, :likes
end
resources :collections
end
просмотров / макеты / application.html.erb
<%= form_tag search_posts_path, :method => :get do %>
<p>
<%= text_field_tag :q, params[:q] %> <%= submit_tag "Search!" %>
</p>
<% end %>
PagesController
def home
@title = "Home"
if user_signed_in?
@user = current_user
@post = current_user.posts.build
@feed_items = current_user.feed.paginate(:per_page => "10", :page => params[:page])
else
#render :layout => 'special_layout'
end
end