0

私はRORを初めて使用するので、これは非常に単純な問題である可能性があります。

Web アプリケーションに ransack gem をインストールしました。データベースでプロジェクト名とクライアントを検索したいと考えています。ホームページに使用するインデックス ページ ビューと、作成した検索アクションを使用する検索ページがあります。

def index
@projects = Project.all

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


def search

  @q = Project.search(params[:q])
  @project_search = @q.result(:distinct => true)

  respond_to do |format|
    format.html # search.html.erb
    format.json { render :json => @projects }
  end
end

ここに私の検索ビューの一部があります:

<%= search_form_for @q do |f| %>
  <%= f.label :project_name %>
  <%= f.text_field :project_name %>
  <%= f.label :client %>
  <%= f.text_field :client %>
  <%= f.submit %>
<% end %>

検索ページを読み込もうとすると、次のエラーが発生します。

未定義のメソッド「検索」

抽出されたソースがプロジェクト コントローラーのこの行にある

@q = Project.search(params[:q])

うまくいけば、それは簡単な修正であり、私が間違っていることを説明できるので、私は学びます.

どんな助けでも大歓迎です。

前もって感謝します!

編集: 上記のインデックス アクションを追加して、インデックス アクションと検索アクションがあることを示しました。これも私の routes.rb ファイルです。

FinalApp::Application.routes.draw do
resources :projects
match "search" => "projects#search", :as => :search
root :to => 'projects#index'
end

2番目の編集:

サーバーを再起動していませんでした。私は今別のエラーがあります。

未定義のメソッド「結果」

抽出されたソースがプロジェクト コントローラーのこの行にある

@project_search = @q.result(:distinct => true)

3番目の編集:

別のエラー:/

未定義のメソッド「schema_cache」

抽出されたソースがプロジェクト コントローラーのこの行にある

@q = Project.search(params[:q])
4

2 に答える 2

2

また、Gemfile に Gem を追加してインスタンスを再起動した後、Bundle Install を実行したか、または正しい開発環境設定を使用したことは確かですか?

Ransack は検索方法を追加するため、適切にインストールされていないように見えます。

于 2012-07-20T09:31:42.097 に答える
0

別の質問で解決された問題: Ruby on Rails: 高度な検索

私は gemransackを使用したことがありませんが、最初の行はand でdef searchある必要があると思います...または、routes.rb にルートを含めましたか?def indexsearch methodsearch

とにかく、探しているのは非常に単純な検索であり、gem は必要ないと思います。

モデルで検索方法を定義できます。

product.rb

def self.search(search)
  if search
    find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
  else
    find(:all)
  end
end

products_controller.rb:

def index
  @projects = Project.search(params[:search])
end

検索フォームは、アプリケーションのどこにでも含めることができます。

<% form_tag projects_path, :method => 'get' do %>
  <p>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", :name => nil %>
  </p>
<% end %>

こちらをご覧ください。高度な検索が必要な場合は、こちらをご覧ください

役立つことを願っています

于 2012-07-20T09:20:14.780 に答える