【问题标题】:Persistent search from Sidebar - Rails从侧边栏进行持久搜索 - Rails
【发布时间】:2015-08-18 18:07:24
【问题描述】:

我有一个带有搜索功能的侧边栏,用于查找项目。单击项目(在本例中为课程)后,显示页面将出现在侧边栏的右侧,但是一旦单击,搜索列表将恢复为其初始(未搜索)状态。我怎样才能进行持久搜索,也就是我怎样才能使搜索保持搜索到的内容。这是我的代码:

型号

class Course < ActiveRecord::Base
    def self.search(search)
        if search
          where("lower(name) LIKE ?", "%#{search.downcase}%")
        else
          all
        end
    end
end

查看

<%= form_tag courses_path, :method => 'get' do %>
      <p>
        <%= text_field_tag :search, params[:search] %>
        <%= submit_tag "Search", :name => nil %>
      </p>
<% end %>

控制器

private
def search_course
      @courses = Course.search(params[:search]).paginate(page: params[:page], per_page: 4) #paginating
end

【问题讨论】:

    标签: ruby-on-rails search persistence sidebar


    【解决方案1】:

    尝试编辑您的视图,如下所示:

    <%= form_tag courses_path, :method => 'get', :remote => true do %>
          <p>
            <%= text_field_tag :search, params[:search] %>
            <%= submit_tag "Search", :name => nil %>
          </p>
    <% end %>
    

    这样每次点击按钮时页面都不会刷新。

    【讨论】:

      【解决方案2】:

      尝试:

      <%= text_field_tag :search, params[:search], value: params[:search] if params[:search] %>
      

      这会将由 text_field_tag rails helper 生成的输入标签的 value 属性设置为params[:search]params[:search] 是用户输入和提交的内容,如果 params[:search] 返回 true,则输入标签的值将设置为 params[:search]

      【讨论】:

      • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 2016-05-06
      • 2014-03-16
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多