簡體   English   中英

區分大小寫的搜索限制了結果

[英]case sensitive search is limiting results

我正在嘗試修改搜索,以便如果用戶搜索“牧馬人”,他們將獲得與搜索“牧馬人”相同的結果。 數據庫的首字母大寫,因此我猜如果小寫的話我需要大寫..不確定如何完成此操作---基本上,我不希望大寫在搜索時起作用。

我的搜索表:

<%= form_for(@post) do |f| %>
  <% if @post.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>

      <ul>
      <% @post.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :heading %><br>
    <%= f.text_field :heading %>
  </div>
  <div class="field">
    <%= f.label :body %><br>
    <%= f.text_area :body %>
  </div>
  <div class="field">
    <%= f.label :price %><br>
    <%= f.text_field :price %>
  </div>
  <!--<div class="field">
    <%= f.label :neighborhood %><br>
    <%= f.text_field :neighborhood %>
  </div> -->
  <div class="field">
    <%= f.label :external_url %><br>
    <%= f.text_field :external_url %>
  </div>
  <div class="field">
    <%= f.label :timestamp %><br>
    <%= f.text_field :timestamp %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

我的帖子控制器:

class PostsController < ApplicationController
  before_action :set_post, only: [:show, :edit, :update, :destroy]

def home
end

  # GET /posts
  # GET /posts.json
  def index
    @posts = Post.order('timestamp DESC').paginate(:page => params[:page], :per_page => 50)
    @posts = @posts.where(model: params["model"]) if params["model"].present?
    @posts = @posts.where(year: params["year"]) if params["year"].present?
    @posts = @posts.where(neighborhood: params["neighborhood"]) if params["neighborhood"].present?
    @posts = @posts.where("price > ?", params["min_price"]) if params["min_price"].present?
    @posts = @posts.where("price < ?", params["max_price"]) if params["max_price"].present?
    @posts = @posts.where(transmission: params["transmission"]) if params["transmission"].present?
    @posts = @posts.where(title_status: params["title_status"]) if params["title_status"].present?
  end

  # GET /posts/

這是一個小例子。

@posts = @posts.where( all, :conditions => ["lower(model) =?", params["model"].downcase]) if params["model"].present?

這里發生的情況lower(field_name)使字段的值變成小寫

params [:name] .downcase使值小寫

@posts = @ posts.where(all,:conditions => [“” lower(model)=?“,params [” model“]。downcase])如果params [” model“]。present?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM