1

検索バーが部分的に機能しています。ただし、私のホームページから私のproducts#indexページにリダイレクトされないようです。製品を検索すると、次の URL が表示されます:http://localhost:3000/?utf8=%E2%9C%93&search=intelただし、URL を次のように変更すると、http://localhost:3000/search?utf8=%E2%9C%93&search=intelこれは機能します。私のセットアップは次のとおりです。

検索コントローラ

class SearchController < ApplicationController
  def index
    @products = Product.all(:conditions => ['title LIKE ?', "%#{params[:search]}%"])
  end
end

ProductsController.rb

def index
    @products = Product.filter(params[:search], [:title])

    respond_to do |format|
      format.html
      format.json { render json: @products }
    end
  end

application.html.erb

 <%= form_tag search_path, :class => 'navbar-form to-the-right', :method => 'get' do %>
            <%= text_field_tag :search, params[:search], :class => 'span2', :placeholder => 'Search' %>
        <% end %>
      </form>

Routes.rb

  match '/search' => 'search#index'

これが機能しない理由を特定できないようです。

4

2 に答える 2

1

あなたのルートはヘルパーを提供しませんsearch_path。これを有効にするには:

match '/search' => 'search#index', as: :search
于 2013-03-07T19:29:35.977 に答える
0

あなたの投稿によると、私はこれを試します:

class ProductsController < ApplicationController

  def index
   @products = Product.filter(params[:title])

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @products }
    end
  end

product.rb

 def self.filter (search_title)
  return scoped unless search_title.present?
    where(['title LIKE ?', "%#{search_title}%"])
 end

route.rb

match '/search' => 'products#index'

application.html

<%= form_tag search_path, :class => 'navbar-form to-the-right', :method => 'get' do %>
 <%= text_field_tag :title, params[:title], :class => 'span2', :placeholder => 'Search' %>
<% end %>
于 2013-03-07T21:37:52.513 に答える