簡體   English   中英

SQLite3 :: SQLException在Rails中實現搜索功能

[英]SQLite3::SQLException Implementing Search Function In Rails

我正在使用Rails的搜索功能。 我遵循了以下教程

http://railscasts.com/episodes/37-simple-search-form

因此,我使用以下內容更新了tutorial.rb

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

使用以下內容更新我的tutorials_controller.rb

def index
  @tutorials = Tutorial.search(params[:search])
end

最后我的看法

<div id="search">
      <%= form_tag tutorials_path, :method => 'get' do %>
    <p>
      <%= text_field_tag :search, params[:search] %>
      <%= submit_tag "Search", :name => nil, :class => "btn btn-success" %>
     </p>
    <% end %>
 </div>

一切都在顯示。 當我點擊搜索框時,出現以下錯誤。

ActiveRecord::StatementInvalid in TutorialsController#index

SQLite3::SQLException: no such column: name: SELECT "tutorials".* FROM "tutorials"  WHERE     (name LIKE '%%')

任何幫助,不勝感激。 仍然是新事物,這是我的深度。 我可以看到它在從數據庫中獲取信息時遇到問題,但不確定如何解決它。

干杯!

根據錯誤SQLite3::SQLException: no such column: nametutorials表中沒有列name

如果你打算搜索tutorials基於表name字段,然后將其添加到tutorials與遷移表:

rails g migration AddNameToTutorial name

運行rake db:migrate

將一些帶有名稱的記錄插入Tutorial表中。

然后,繼續使用當前代碼根據tutorials表中的名稱字段進行search


第二種選擇是,如果您打算基於其他existing field搜索tutorials表,則只需更新搜索方法,如下所示:

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

其中,將fieldname替換為要搜索的屬性名稱。

暫無
暫無

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

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