Rails搜索不能使用Heroku在移动设备上工作

时间:2014-04-11 17:34:51

标签: ios ruby-on-rails jquery-mobile heroku devise

我遇到了一个有趣的情况。我目前正在运行一个非常基本的应用程序,我有一个搜索功能,搜索用户(设计宝石)。它在本地很好用,而且在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" %>

1 个答案:

答案 0 :(得分:1)

我想出来了。是的,这真的很简单。

它同时仅在移动设备和Heroku上被破坏的原因是因为我的移动搜索将第一个字母默认为大写字母,而我的桌面浏览器搜索仅以小写字母进行。

基本上,Postgres不接受大写搜索。为了解决这个问题,我只是在我的用户模型中添加了一些ruby来自动缩减搜索范围。

将我的用户模型更改为:

def self.search(search)
  search.blank? ? [] : all(:conditions => ['email LIKE ?', "%#{search.downcase}%"])
end