【问题标题】:ruby on rails: auto redirect to the home page then perform searchingruby on rails:自动重定向到主页然后执行搜索
【发布时间】:2017-05-27 13:21:55
【问题描述】:

我对 Rails 很陌生,在我的应用程序中实现搜索栏时遇到了问题。这个搜索栏存在于我的应用程序的每个页面中,但是它仅在我在根页面中搜索时才有效。如果我单击其他页面中的搜索按钮,该页面将不会被重定向到主页/索引并执行搜索。

下面是我的控制器/home_controller.erb(root_path 是 home#index):

class HomeController < ApplicationController
  def index
    if params[:display]
      @promos = Promo.where(category: params[:display]).order(created_at: :desc)
    elsif params[:search]
      @promos = Promo.search(params[:search]).order(created_at: :desc)
    else
      @promos = Promo.all.order(created_at: :desc)
    end
  end
end

以下是我的观点/application.html.erb

<form class="search_bar">
    <div class="input-group">
      <%= form_tag(root_path, :method => "get", :controller => "home" ) do %>
        <%= text_field_tag :search, '', placeholder: "Search Promos", class: "form-control search-input" %>
        <%= button_tag(type: 'submit', class: "btn btn-default") do %>
          <i class="glyphicon glyphicon-search"></i> 
        <% end %>
      <% end %>


    </div>
  </form>

谁能帮我解决这个问题?我主要想实现重定向到根页面并执行搜索动作。但是,如果在实现相同效果的同时实现此逻辑的任何其他选项,我也将不胜感激。

谢谢!!

【问题讨论】:

    标签: ruby-on-rails search


    【解决方案1】:

    这是因为您有一个嵌套在表单中的表单。 &lt;form class="search_bar"&gt; 需要删除,因为它会导致第二个表单标签,使用 form_tagto be ignored 创建。您的搜索栏需要与此类似:

    <div class="input-group">
      <%= form_tag(root_path, :method => "get", :controller => "home" ) do %>
        <%= text_field_tag :search, '', placeholder: "Search Promos", class: "form-control search-input" %>
        <%= button_tag(type: 'submit', class: "btn btn-default") do %>
          <i class="glyphicon glyphicon-search"></i> 
        <% end %>
      <% end %>
    </div>
    

    【讨论】:

    • 哦,我明白了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2013-12-13
    • 2015-09-03
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 2012-06-08
    • 2018-06-11
    • 1970-01-01
    相关资源
    最近更新 更多