使用在一个红宝石中连接的2个字段进行搜索

时间:2015-01-16 14:18:58

标签: ruby-on-rails ruby search textfield

如果你可以帮助我,我会徘徊。我需要使用我的DB,Cod +编号的2个字段进行搜索。我在一栏中展示了这一点,例如。 cod ACE +编号003,它显示ACE003,那么如何在一个文本字段中搜索这两个选项。现在,如果您在字段中输入ACE003,则不会返回任何内容,但如果您键入ACE,当然它可以正常工作。这是我的代码..

index.html

<%= text_field_tag :s_cod, params[:s_cod] %>  

<% @items.each do |item| %>
  <tr>
    <td><%= item.cod + '%03d' % item.num.to_s %></td>
    ...  

控制器

if (params[:s_cod] != nil) or (params[:s_rotulo] != nil) or (params[:s_den_cont] != nil) or (params[:s_marca] != nil)
  @items = View_item.all.order("date_expired ASC").page(params[:page]).per(15).search(params[:s_cod], params[:s_rotulo], params[:s_den_cont], params[:s_marca])  

您可以看到我用于搜索的许多字段。我必须使用一个字段来搜索cod + number。

模型

搜索部分

def self.search(s_codigo, s_rotulo, s_den_cont, s_marca)
where("cod ilike :s_c and rotulo ilike :s_r and den_cont ilike :s_d and marca ilike :s_m", s_c: "%#{s_cod}%", s_r: "%#{s_rotulo}%", s_d: "%#{s_den_cont}%", s_m: "%#{s_marca}%")
end  

如何使用一个文本字段搜索cod + number?提前谢谢!

更新(已解决)
在我的观点中,我使用

在postgress DB中
.concat(items.cod, to_char(items.num, 'fm000'::text)) AS codigo

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您需要查询两列的连接值。

在MySQL中,使用像

这样的CONCAT()函数
where("concat(code,number) LIKE :s_c",s_c: "%#{s_cod}%")

我相信PostgreSQL应该是类似的,但我并不是100%熟悉语法