[英]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: name
, tutorials
表中沒有列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.