Rails App搜索栏在本地工作,但在Heroku上不起作用



EDIT:不是"为什么此查询在Heroku上不起作用?"的副本。搜索不涉及字符串,只涉及日期查询。

Rails App 在搜索时不会在本地抛出错误,但在产品上搜索时每次都会抛出错误。这曾经工作正常。我正在针对SQLite3进行开发,并且最近没有更改与搜索栏直接交互的任何内容。我回滚到一些相当旧的树枝以确保;它仍然坏了。我让 SQLite3 在我的 gemfile 中指定的 1.3.9 上运行。

这是我的模型的搜索定义:

def self.search(search)
   where("startDay LIKE ?", "%#{search}%")
end

观点:

<%= form_tag(weeks_path, :method => "get", id: "search-form") do %>
    <h4>Search for weeks by start date </h4>
    <%= text_field_tag :search, params[:search], placeholder: "Search Weeks", value: Date.today.beginning_of_week(:sunday) - 7 %>
    <%= submit_tag "Search", :name => nil %>
<% end %>

我应该包括什么可能有助于解决问题的吗?

主要的事情不是搜索字符串或日期。问题是您的本地数据库与生产数据库不同。PostgreSQL 不能直接LIKE日期时间字段应用该操作,应在使用字符串操作之前将其显式转换为字符串。如果不在开发环境中切换到生产类型数据库,将来将继续获得类似的错误。

在 postgresql 中,此查询应编写如下:

 where("startDay::text LIKE ?", "%#{search}%")

对于将来看到这个的人。我切换到postgreSQL,但由于我的应用程序已完成99%,我决定与其尝试返回我的文件并更改所有语法,不如放弃Heroku,继续使用sqlite3,而是托管我自己的生产服务器。

最新更新