2013-06-23 3 views
0

Я только что запустил приложение для рельсов с героку (http://fast-reaches-9399.herokuapp.com/). Поиск работает в моей локальной среде разработки, но не в производственной среде. Может ли это быть из-за проблемы с postgres vs 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 
+0

'LIKE' в Postgres чувствителен к регистру, это может быть ваш вопрос? Попробуйте 'name ILIKE?' Быть нечувствительным к регистру. – declan

ответ

1

Как сказал declan, это связано с тем, что postgres чувствителен к регистру при использовании LIKE. Проблема с использованием ILIKE заключается в том, что он больше не будет работать в sqlite.

Разновидность хак, который работает, чтобы изменить условия поиска:

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

Работал отлично! Благодарю. –

+0

Добро пожаловать! Не могли бы вы отметить ответ, как принято? :) –

Смежные вопросы