搜索在开发中工作但不在生产中

时间:2013-06-23 18:18:28

标签: ruby-on-rails search dev-to-production

我刚用heroku(http://fast-reaches-9399.herokuapp.com/)启动了我的rails应用程序。搜索适用于我的本地开发环境,但不适用于生产环境。这可能是因为postgres与sqlite有问题吗?

我这样做了:

group :development do
  gem 'sqlite3', '1.3.5'
end

group :production do
  gem 'pg', '0.12.2'
end

就像在本教程中一样(http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec-heroku_setup)。

这是我搜索的相关代码。我用这个(http://railscasts.com/episodes/37-simple-search-form)寻求帮助。

/search.html.erb

<h2>Results:</h2>

<ul>
    <% @colleges.each do |college| %>
        <li><%= link_to "#{college.name}", "#{college.url}" %></li>
    <% end %>
</ul>

application.html.erb(我的布局文件)

<%= form_tag("/search", :method => 'get') do -%>
    <li id="search"> <%= search_field_tag :search, params[:search] %></li>
<% end -%>

static_pages_controller.rb

def search
  @colleges = College.search(params[:search])
end

college.rb

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

1 个答案:

答案 0 :(得分:1)

正如declan所说,这是因为postgres在使用LIKE时区分大小写。使用ILIKE的问题是它不再适用于sqlite。

一种有效的黑客行为是将搜索条件更改为:

find(:all, :conditions => ['UPPER(name) LIKE ?', "%#{search.upcase}%"])