Поисковая панель не активна при развертывании на героку (Ruby on Rails) - PullRequest
0 голосов
/ 03 мая 2018

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

У меня он работает как на локальном хосте, но когда он развернут для производства, он больше не работает, это моя ошибка из журналов Heroku:

ActionView::Template::Error (PG::UndefinedFunction: ERROR:  operator does not exist: integer ~~* unknown

Форма поиска:

<%= form_tag(tools_path, :method => "get", id: "search-form") do %>
    <%= text_field_tag :search, params[:search], placeholder: "Search Tools" %>
    <%= submit_tag "Search", :name => nil %>
<% end %>

My Display должен перенаправить на индекс указанного поискового запроса

и мой контроллер выглядит так:

  def index
    @tools = Tool.paginate(params[:page], :per_page => 50)
    if params[:search]
      @tools = Tool.search(params[:search]).paginate(page: params[:page], per_page: 50)
    else
      @tools = Tool.paginate(params[:page], :per_page => 50)
    end

end

Я провел некоторое исследование, но все, что я действительно придумал, это то, что PG может не иметь возможности поиска целых чисел, что объясняет, почему в разработке с sqlite это работает, но я не понимаю, почему это сломается панель поиска целиком, даже если мой запрос был простой строкой. Также я знаю, что использование двух разных баз данных обычно не то, что вы бы сделали. Изначально это приложение должно было базироваться на локальном сервере, но пользователь решил, что идея ему не понравилась после того, как база данных уже была построена ... ПРИМЕЧАНИЕ Я забыл скопировать свою модель:

class Tool < ApplicationRecord

    def self.search(search)
        where("prefix ILIKE ? OR basic ILIKE ? OR global ILIKE ? OR suffix ILIKE ?", "%#{search}%", "%#{search}%", "%#{search}%", "%#{search}%")
        end 
end

1 Ответ

0 голосов
/ 03 мая 2018

Используйте переменную экземпляра в представлении вместо params:

в вашем контроллере:

def index
  @search_term = params[:search].to_s
  if params[:search]
    @tools = Tool.search(params[:search]).paginate(page: params[:page], per_page: 50)
  else
    @tools = Tool.paginate(params[:page], :per_page => 50)
  end
end

В поле зрения

<%= form_tag(tools_path, :method => "get", id: "search-form") do %>
  <%= text_field_tag :search, @search_term, placeholder: "Search Tools" %>
  <%= submit_tag "Search", :name => nil %>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...