サイトのすべてのページから投稿を検索できるように、レイアウトに検索を追加するにはどうすればよいですか? ここのstackoverflowのように。
チュートリアルでは、PostsController の index アクションに search メソッドを追加し、views/post/index.html.erb にフォームと結果ブロックを追加する方法を示しています。
投稿コントローラーの検索アクションに get 要求を送信するフォームを application.html.erb に作成しようとしています。私はそれを正しく理解できないようです。誰かが私が間違っている場所を説明するのを手伝ってくれますか?
現在、ホームページにアクセスすると、次のエラーが表示されます。
NameError in Pages#home
未定義のローカル変数またはメソッド「search_posts_path」
投稿コントローラー
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
ルート.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 %>
ページコントローラー
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