簡體   English   中英

Ruby on Rails:Ransack未定義的方法`result`

[英]Ruby on Rails: Ransack undefined method `result`

我是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

第二次編輯:

我沒有重新啟動我的服務器。 我現在有另一個錯誤。

未定義的方法`結果'

將提取的源位於此行的項目控制器中

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

第三次編輯:

另一個錯誤:/

未定義的方法`schema_cache'

將提取的源位於此行的項目控制器中

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

並且您確定在將Gem添加到Gemfile並重新啟動實例或具有正確的開發環境設置后運行了Bundle Install?

Ransack添加了搜索方法,因此它似乎沒有正確安裝。

另一個問題解決了問題: Ruby on Rails:高級搜索

我從來沒有使用過的寶石ransack ,但我覺得你的第一線def search應該是def index比您定義的search method別的地方...或者你有包括用於路線search你的routes.rb?

無論如何,你正在尋找的是一個非常簡單的搜索,我認為你不需要任何寶石。

您可以在模型中定義搜索方法:

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 %>

請看這里 ,如果您需要高級搜索,請查看此處

我希望它有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM