【问题标题】:unable to get search function work by rails无法通过 Rails 获得搜索功能
【发布时间】:2014-08-30 21:42:52
【问题描述】:

我想按名称简单搜索用户索引

模型用户.rb

    def self.search(query)
       where("username LIKE ?", "%#{query}%")
    end

查看我刚刚拥有的用户index.html.erb

    <%= form_tag users_search_path, :method => 'get' do %>

    <td><%= text_field_tag :search, params[:search] %></td>

    <%= submit_tag "Search", :class => "buttons buttons-rounded buttons-flat-action", :id => "button-new"%>

  <br><br><br>
  <% end %>

控制器

  @page =  params[:page]
  @search = params[:search];

  def index
   if params[:search]
  @users = User.search(params[:search]).paginate(:page => params[:page], :per_page => @page)
  else
  @users = User.order(:username).joins(:biography).where("`is_active?` = true AND `last_sign_in_at` > DATE_SUB(NOW(), INTERVAL 6 MONTH) ").paginate(:page => params[:page], :per_page => @page)
    end 
  end

  def search

   Rails.logger.debug("event1: #{@search}")

   redirect_to users_path
   index

   Rails.logger.debug("search start")
  end

当我点击搜索按钮时,调试器信息是

     D, [2014-07-09T13:10:50.755373 #5501] DEBUG -- : event1: 
     D, [2014-07-09T13:10:50.755508 #5501] DEBUG -- : event1: 

【问题讨论】:

  • 不工作是什么意思?调用这个方法会得到什么?
  • 您必须指定“不工作”的含义。你得到一个特定的错误吗?如果是这样,发布堆栈跟踪

标签: ruby-on-rails search


【解决方案1】:

您的搜索方法错误,它重定向到没有搜索参数的索引操作。您可以像这样将表单提交给索引操作

<%= form_tag users_path, :method => 'get' do %>

或者像这样更优雅

class UsersController < ApplicationController    
  before_action :filter_data, only: [:index, :search]

  def index

  end

  def search
    render :index
  end

  def filter_data
    if params[:search]
      @users = User.search(params[:search]).paginate(page: params[:page], per_page: params[:page])
    else
      @users = User.order(:username).joins(:biography).where("`is_active?` = true AND `last_sign_in_at` > DATE_SUB(NOW(), INTERVAL 6 MONTH) ").paginate(page: params[:page], per_page: params[:page])
    end
  end
end

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多