所以我有这个页面分页我网站上的所有成员,我添加了一个字母链接,允许人们按成员名称查找成员。它在我的开发机器上工作正常,但它只能在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| %>....
所以我检查是否有传入的参数,如果没有,那么@artists会显示,否则@names就是。它在我的笔记本电脑上工作得很好,但在heroku中却不行。
答案 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
的PS Heroku提示