【问题标题】:Using sinatra checkboxes to filter searching使用 sinatra 复选框过滤搜索
【发布时间】:2015-04-27 22:23:23
【问题描述】:

搜索.rb

keywords = ["sheffield", "liverpool", "london", "manchester"]

get '/search' do

  @keyword = "No keyword entered"
  @results = []
  puts keywords[0]

  unless params[:filter].nil?
      @tick_box1 = params[:filter][:follower] == 'on'
      @tick_box2 = params[:filter][:following] == 'on'
  end

  if (@tick_box1) && (@tick_box2)
    @results = @client.search('chelsea').take(20)
  elsif (@tick_box1) && (!@tick_box2)
    @results = @client.search('arsenal').take(20)
  elsif (!@tick_box1) && (@tick_box2)
    @results = @client.search('liverpool').take(20)
  else
    unless params[:keyword].nil?
      @keyword = params[:keyword]
      @results = @client.search(@keyword).take(20)
    end

    unless params[:use_keyword].nil?
      @results = @client.search(keywords[0]).take(20)
    end
  end
    erb :search
end

搜索.erb

<% query = "" %>
<h1>Search</h1>

<div class="search-container">
    <form>
        <input type="search" name="keyword" value="<%=h params[:query]%>">
        <input type="submit" value="Search" class="button">
        <a href="?use_keyword=1" class="button">Use Keywords</a>
        <a href="settings">Edit Keywords</a>

        <div class="filters">
            <ul>
                <li><input type="checkbox" name="filter[follower]">Followers</li>
                <li><input type="checkbox" name="filter[folowing]">Following</li>
            </ul>
        </div>
    </form>


    <% if query != "" %>
    <p>Showing results for <strong><%=h query %></strong></p>
    <% end %>
    <%= @keyword %>
    <ol class="search-results">
        <% @results.each do |result| %>
        <li><%= result.text %></li>
        <% end %>
    </ol>
    <%= erb :"partials/pagination", :locals => {
        :total_results => 100,
        :results_per_page => 10,
        :current_page => 1
    }%>

我想让它在选中复选框时搜索特定类别(例如跟随者)。但目前即使我选中复选框,它仍然会搜索输入的关键字。但如果我不选择任何复选框,我只希望它在整个 Twitter 中搜索输入的关键字。有没有人有任何解决方案。

ps(我会写代码搜索追随者,等我想明白之后再关注。)

【问题讨论】:

    标签: ruby-on-rails ruby twitter sinatra


    【解决方案1】:

    您认为问题在于,您有另一种形式的复选框,因此当您点击搜索时,它们不会被发送。您需要一种形式的所有输入。

    【讨论】:

    • 我现在更新了它并添加了随机搜索词,但目前它只适用于“阿森纳”,应该只是关注者勾选。当两者都被勾选时,它也会搜索“arsenal”而不是“chelsea”,当只勾选“关注”时,它会搜索输入的关键字而不是“liverpool”。任何想法我现在做错了什么?
    【解决方案2】:

    搜索.rb

     keywords = ["sheffield", "liverpool", "london", "manchester"]
    
    get '/search' do
    
      @keyword = "No keyword entered"
      @results = []
      puts keywords[0]
    
      unless params[:filter].nil?
          @tick_box1 = params[:filter][:follower] == 'on'
          @tick_box2 = params[:filter][:following] == 'on'
      end
    
      if (@tick_box1) && (@tick_box2)
        @results = @client.search('chelsea').take(20)
      elsif (@tick_box1) && (!@tick_box2)
        @results = @client.search('arsenal').take(20)
      elsif (!@tick_box1) && (@tick_box2)
        @results = @client.search('liverpool').take(20)
      else
        unless params[:keyword].nil?
          @keyword = params[:keyword]
          @results = @client.search(@keyword).take(20)
        end
    
        unless params[:use_keyword].nil?
          @results = @client.search(keywords[0]).take(20)
        end
      end
        erb :search
    end
    
    <% query = "" %>
    <h1>Search</h1>
    

    搜索.erb

    <div class="search-container">
        <form>
            <input type="search" name="keyword" value="<%=h params[:query]%>">
            <input type="submit" value="Search" class="button">
            <a href="?use_keyword=1" class="button">Use Keywords</a>
            <a href="settings">Edit Keywords</a>
    
            <div class="filters">
                <ul>
                    <li><input type="checkbox" name="filter[follower]">Followers</li>
                    <li><input type="checkbox" name="filter[following]">Following</li>
                </ul>
            </div>
        </form>
    
    
        <% if query != "" %>
        <p>Showing results for <strong><%=h query %></strong></p>
        <% end %>
        <%= @keyword %>
        <ol class="search-results">
            <% @results.each do |result| %>
            <li><%= result.text %></li>
            <% end %>
        </ol>
        <%= erb :"partials/pagination", :locals => {
            :total_results => 100,
            :results_per_page => 10,
            :current_page => 1
        }%>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      • 2021-08-20
      • 1970-01-01
      • 2019-09-08
      • 1970-01-01
      相关资源
      最近更新 更多