Ruby on rails 为什么我的过滤功能不能在Heroku上运行,而在我的开发机器上运行呢?
所以我有一个页面,对我网站上的所有成员进行分页,我添加了一个字母表链接,允许人们通过他们的成员名查找成员。它在我的开发机器上运行得很好,但在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_
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?