我遇到了一个有趣的情况。我目前正在运行一个非常基本的应用程序,我有一个搜索功能,搜索用户(设计宝石)。它在本地很好用,而且在Heroku上很棒。这是一个移动的第一个Web应用程序,所以我也一直在使用Nitrous.io在移动设备上进行测试。我之所以提到这一点是因为搜索功能正在移动设备上运行,仅在目前为止使用Nitrous.io的云服务器在iOS Safari和Chrome上进行了测试。
所有这一切,似乎当我在移动设备上运行应用程序时,Heroku上的和,它只是没有显示我的搜索结果。我觉得我只是缺少一些非常愚蠢的东西。
这是我的用户模型:
def self.search(search)
search.blank? ? [] : all(:conditions => ['email LIKE ?', "%#{search.strip}%"])
end
以下是我的观点:
<% if (@user) %>
<% if (@user.empty?) %>
<p>Search for your connections by email address!</p>
<% else %>
<% @user.each do |user| %>
<% if current_user.email == "#{user.email}" %>
<!-- display nothing -->
<% end %>
<div class="search-card">
<%= link_to image_tag(user.avatar), user %></p>
<%= link_to "#{user.firstName}", user %>
<%= link_to "#{user.lastName}", user %>
<%= link_to "#{user.company}", user %>
<%= link_to "#{user.email}", user %>
<% if current_user.friends.exists?(user) %>
<%= link_to "View this connection", user, :class => "btn btn-add" %>
<% else %>
<%= link_to "View this person", user, :class => "btn btn-add" %>
<%= link_to "Add Friend", friendships_path(:friend_id => user), :class => "btn btn-add", :method => :post %>
<% end %>
</div>
<% end %>
<% end %>
<% end %>
<% end %>
另外在我看来,这是搜索表单:
<%= form_tag(users_path, :method => "get", id: "search-form", class: "search-form") do %>
<%= text_field_tag :search, params[:search], placeholder: "Search Users", class: "search-form" %>
答案 0 :(得分:1)
我想出来了。是的,这真的很简单。
它同时仅在移动设备和Heroku上被破坏的原因是因为我的移动搜索将第一个字母默认为大写字母,而我的桌面浏览器搜索仅以小写字母进行。
基本上,Postgres不接受大写搜索。为了解决这个问题,我只是在我的用户模型中添加了一些ruby来自动缩减搜索范围。
将我的用户模型更改为:
def self.search(search)
search.blank? ? [] : all(:conditions => ['email LIKE ?', "%#{search.downcase}%"])
end