【问题标题】:Ruby on Rails - Search on Model IndexRuby on Rails - 搜索模型索引
【发布时间】:2014-10-20 00:10:22
【问题描述】:

我希望能够搜索和更新索引。

这是我的控制器方法:

def index
    if params[:search]
      @ofertas = Oferta.search(params[:search]).paginate(page: params[:ofertas_page], :per_page => 5)
    else
      @ofertas = Oferta.all.paginate(page: params[:ofertas_page], :per_page => 5)
    end
  end

我在模型中的搜索方法

def self.search(search)
    where("titulo like ?","%w{search}%")
  end

这是搜索表单

<%= form_tag ofertas_path, :method => 'get' do %>
  <p>
    <%= text_field_tag :search, params[:search], placeholder: "Procurar Entidades" %>
    <%= submit_tag "Procurar", :name => nil %>
  </p>
<% end %>

我在许多搜索教程中都看到过这种设置,但无论我输入什么,都没有出现。有人知道我做错了什么吗?

【问题讨论】:

    标签: ruby-on-rails forms search models


    【解决方案1】:

    您似乎试图将search 变量插入到字符串中,但没有得到正确的符号。这个怎么样:

    "%#{search}%"
    

    注意# 而不是w

    【讨论】:

      【解决方案2】:
      where("titulo like ?","%w{search}%")
      

      应该是:

      where("titulo like ?", "%#{search}%")
      

      #{xxx} 用于字符串插值 - 它允许您将 ruby​​(包括变量)注入字符串。

      "%xxxx%" 告诉 SQL 搜索字符串可以出现在标题列中的任何位置。 '%' 是 SQL 中的通配符。

      %w{xxx yyy zzz}["xxx", "yyy", "zzz"] 的简写 - Ruby 中的一个数组,作为字符串本身对 SQL 来说意义不大。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-20
        • 2012-07-21
        • 2010-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-18
        相关资源
        最近更新 更多