Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么我的过滤功能不能在Heroku上运行,而在我的开发机器上运行呢?_Ruby On Rails_Ruby On Rails 3_Heroku - Fatal编程技术网

Ruby on rails 为什么我的过滤功能不能在Heroku上运行,而在我的开发机器上运行呢?

Ruby on rails 为什么我的过滤功能不能在Heroku上运行,而在我的开发机器上运行呢?,ruby-on-rails,ruby-on-rails-3,heroku,Ruby On Rails,Ruby On Rails 3,Heroku,所以我有一个页面,对我网站上的所有成员进行分页,我添加了一个字母表链接,允许人们通过他们的成员名查找成员。它在我的开发机器上运行得很好,但在heroku上就不行了 我的控制器有: def artists @artists = Member.joins(:member_role).where("member_roles.artist" => true).page(params[:page]).per(20) @names = Member.joins(:member_

所以我有一个页面,对我网站上的所有成员进行分页,我添加了一个字母表链接,允许人们通过他们的成员名查找成员。它在我的开发机器上运行得很好,但在heroku上就不行了

我的控制器有:

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

:艺术家,:控制器=>:成员,:字母=>a}%>
....

所以我正在检查是否有任何传入的参数,如果没有,则显示@artists,否则显示@names。它在我的笔记本电脑上运行得很好,但在heroku中却不行,当你说它不工作的时候-有什么错误吗

您可以尝试heroku日志以查看是否存在任何错误

您在dev中使用的是什么数据库?你在用postgres吗

Heroku使用的postgres有一些特殊的怪癖——因此,如果您在dev中使用sqlite或mysql,那么您可能会在Heroku上获得不同的行为

和/或在本地使用postgres

嗯,克里斯


PS Heroku的提示

我猜这是因为区分大小写

您所使用的大多数MySQL版本都不区分大小写

默认情况下,Postgres对LIKE区分大小写。要绕过此问题,请使用ILIKE:

SELECT * FROM foo WHERE name ILIKE '%a%'
(请注意a周围的通配符“%”)


您确实应该尽可能地让dev env与生产环境保持距离,以减轻这种bug。使用Postgres。

没有错误,单击一封信只需按原样重新加载页面(),是的,我在我的开发机器上使用myswl,mySQl中的制动器:`@names=Member.joins(:Member\u role)。where(“Member\u roles.artist”=>true)。where(“membername-ILIKE?”,“#{params[:letter]}%”)。页面(params[:page])。per(20)`你有错误吗?您是否使用我喜欢的字符串任意一侧的通配符5?