[英]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.