为什么我的开发机器上运行时,我的过滤功能不适用于Heroku?

时间:2011-10-18 18:50:49

标签: ruby-on-rails ruby-on-rails-3 heroku

所以我有这个页面分页我网站上的所有成员,我添加了一个字母链接,允许人们按成员名称查找成员。它在我的开发机器上工作正常,但它只能在he​​roku上工作。

我的控制器有:

  def artists
     @artists = Member.joins(:member_role).where("member_roles.artist" => true).page(params[:page]).per(20)
     @names = Member.joins(:member_role).where("member_roles.artist" => true).where("membername LIKE ?", "#{params[:letter]}%").page(params[:page]).per(20)

  end

我的观点是:

  <% ('A'..'Z').each do |a|%>
    <%= link_to a, {:action => :artists, :controller =>:members, :letter => a } %>
  <% end%>


  <% if params[:letter].nil? %>
    <div class="content">
      <%= paginate @artists %>
    </div>

    <ol class="members_list">
    <% @artists.each do |member| %>....

所以我检查是否有传入的参数,如果没有,那么@artists会显示,否则@names就是。它在我的笔记本电脑上工作得很好,但在heroku中却不行。

2 个答案:

答案 0 :(得分:1)

我猜这归结为区分大小写。

你说你正在使用的大多数MySQL版本没有区分大小写的LIKE。

默认情况下,Postgres对LIKE区分大小写。为了解决这个问题,请使用ILIKE:

SELECT * FROM foo WHERE name ILIKE '%a%'

(注意a周围的通配符'%')

你真的应该尽量让你的dev env尽可能接近生产,以减轻这种错误。使用Postgres。

答案 1 :(得分:0)

当你说它不起作用时 - 有任何错误吗?

您可以尝试使用heroku log(s?)查看是否有错误。

您在dev中使用了哪些数据库?你在使用postgres吗?

Heroku使用postgres有一些特定的怪癖 - 所以如果你在dev中使用sqlite或mysql,那么你可能会在Heroku上得到不同的行为。

和/或在本地使用postgres。

HTH,Chris

针对migrating to postgres

的PS Heroku提示