【问题标题】:Search Form Not Working In Production搜索表单在生产中不起作用
【发布时间】:2011-11-30 00:02:39
【问题描述】:

由于某种原因,当我的应用程序启动时,我的搜索表单无法正常工作,在 localhost 中它的工作没有问题,但是当我在启动的应用程序上使用搜索时,搜索似乎被破坏了。我不知道为什么,我按照 Railscasts 简单搜索表单来实现它,它在本地根本不是问题。

我的用户模型看起来像

   def self.search(search)
     if search
       find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
     else
       find(:all)
     end
   end

我的用户控制器索引看起来像

   def index
     @users = User.search(params[:search])
     @title = "All Users"

     respond_to do |format|
       format.html
       format.json { render :json => @users }
     end
   end

我的用户索引视图

 <% form_tag users_path, :method => 'get' do %>
   <p>
     <%= text_field_tag :search, params[:search] %>
     <%= submit_tag "Search", :name => nil %>
   </p>
 <% end %>

 <ul class="users">
   <%= render @users %>
 </ul>

不仅搜索无法正常工作,而且当我输入一个名称但它不存在时,它应该返回所有用户,而是返回一个空页面,不确定这是否相关,但我认为我会尽可能地完成.谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 forms search


    【解决方案1】:

    我假设您使用 MySQL 进行开发,使用 heroku 的 PostgreSQL 进行生产。通常,此类错误可能是由于生产和开发数据库环境的差异造成的。

    问题可能是语句

    find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
    

    改成这个

    find(:all, :conditions => ['name ILIKE ?', "%#{search}%"])
    

    注意 ILIKE。

    最好在开发和生产中使用相同的数据库,因为这样可以防止以后出现问题。还可以查看 heroku 文档here。如果您使用的是heroku。希望对你有帮助

    【讨论】:

    • 完美运行,谢谢。只是出于好奇,你们怎么知道我在使用 Heroku,是因为 PostgreSQL 类型错误吗?
    • @Michael 很高兴为您提供帮助,在您的问题出现类似症状之前,我曾经遇到过类似的问题,这就是我猜您使用 heroku 的方式。
    【解决方案2】:

    您是在使用托管服务提供商还是在本地服务器上的“生产”中运行应用程序?如果你使用 Heroku,Heroku 使用 Postgres,它可以不同地处理 sql 查询。要进行测试,您可以在开发环境中设置 Postgres 并检查查询结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多