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

时间:2017-01-16 19:47:15

标签: ruby-on-rails heroku sqlite

编辑:不是"Why doesn't this query work on Heroku?"的副本。搜索不涉及字符串,仅涉及日期查询。

Rails App在搜索时不会在本地抛出任何错误,但每次搜索prod时都会抛出错误。这曾经很好。我正在针对SQLite3进行开发,并且最近没有改变任何直接与搜索栏交互的内容。我回到了一些非常古老的树枝上以确保;它还是坏了。我在我的gemfile中指定的1.3.9上运行SQLite3。

以下是我的模型中的搜索def:

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 %>

我应该包括哪些其他内容可能有助于解决问题?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

对于将来看这个的人。 我切换到postgreSQL,但因为我的应用程序完成了99%,我决定不再试图通过我的文件并更改我的所有语法而放弃Heroku,继续使用sqlite3而是托管我自己的生产服务器。 / p>

相关问题