繁体   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