Форма поиска не работает в производстве - PullRequest
3 голосов
/ 03 октября 2011

По какой-то причине моя форма поиска не работает правильно, когда мое приложение запущено, на локальном хосте оно работает без проблем, но когда я использую поиск в запущенном приложении, поиск кажется прерванным. Я не могу понять, почему, я следовал форме простого поиска Railscasts, чтобы реализовать ее, и это не было проблемой в локальной системе вообще.

Моя пользовательская модель выглядит как

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

Индекс контроллера моего пользователя выглядит как

   def index
     @users = User.search(params[:search])
     @title = "All Users"

     respond_to do |format|
       format.html
       format.json { render :json => @users }
     end
   end

Просмотр моего пользовательского индекса

 <% form_tag users_path, :method => 'get' do %>
   <p>
     <%= text_field_tag :search, params[:search] %>
     <%= submit_tag "Search", :name => nil %>
   </p>
 <% end %>

 <ul class="users">
   <%= render @users %>
 </ul>

Мало того, что поиск не работает должным образом, но когда я набираю имя, а его там нет, он должен возвращать всех пользователей, но вместо этого он возвращает пустую страницу, не уверенную, что это уместно, но я думал, что смогу как можно скорее , Благодарю.

Ответы [ 2 ]

3 голосов
/ 03 октября 2011

Я предполагаю, что вы используете MySQL для разработки и Heroku PostgreSQL для производства. Обычно такие ошибки, вероятно, связаны с различиями в средах баз данных производства и разработки.

Проблемой может быть утверждение

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

изменить это на

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

обратите внимание на ILIKE.

Всегда лучше использовать одну и ту же базу данных при разработке и производстве, так как это предотвратит проблемы в дальнейшем. Также ознакомьтесь с документацией к герою здесь . если вы используете героку. Надеюсь, это поможет

0 голосов
/ 03 октября 2011

Вы используете хостинг-провайдера или запускаете приложение в «производственном» режиме на локальном сервере?Если вы используете Heroku, Heroku использует Postgres, который может по-разному обрабатывать SQL-запросы.Для тестирования вы можете настроить Postgres в вашей среде разработки и проверить результаты ваших запросов.

...