代码之家  ›  专栏  ›  技术社区  ›  benoitr

Ruby/Rails简单搜索表单和空格

  •  2
  • benoitr  · 技术社区  · 14 年前

    我已经在我的应用程序中实现了一个“简单搜索表单”(railscasts#37),但我想知道如何:

    1.)如果关键字字段为空,或者加载了索引页(我尝试过搜索),则无法显示任何结果!= "". 也许有更好的方法) 2.)我可以添加一个函数来避免搜索中出现多个空格。(如果用户在搜索框中写了类似“benoit++”或“++benoit”的内容,则应该显示结果)

    我不想用斯芬克斯思考,因为我会部署在赫罗库

    代码如下:

    在我的用户模型中(用户.rb)

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

    <% form_tag users_path, :method => 'get' do %>
      <%= text_field_tag :search, params[:search] %>
      <%= submit_tag "Search", :name => nil %>
    <% end %>
    
    <% if @users and not @users.empty? %>
      <% @users.each do |user| %>  
        <p><%= link_to "#{user.name}", user %></p>
    .
    .
    .
      <% end %>
    <% end %>
    

    在我的控制器中(用户_控制器.rb)

    def index
      @users = User.search(params[:search])
    end
    

    1 回复  |  直到 14 年前
        1
  •  2
  •   jordinl    14 年前

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

    something.blank? 如果某个值为零或空白,则返回true。

    something.strip 删除字符串开头或结尾的所有空格。如果名称可以由一个以上的单词组成,并且您希望避免单词之间有一个以上的空格,那么您可以这样做 search.strip.squeeze(" ")

    if @users && !@users.empty? 现在在你看来。