Rails4在同一个控制器上进行多个Ransack搜索

时间:2014-09-30 23:50:39

标签: search ruby-on-rails-4 filter ransack

我在事件模型上设置了Ransack

在我的控制器中,我有三个动作分别指向索引,即将发布和myevents。 index显示所有事件 即将展出的活动将会到来 myevents显示用户自己的事件

由于它们在视图中看起来都一样,即将到来的myevents使用索引模板

class EventsController < ApplicationController

def index
  @q = Events.search(params[:q])
  @events = @q.result.includes(:address, user:[:address]).page(params[:page])
end

def upcoming
    @q = Card.future.search(params[:q])
    @cards = @q.result.includes(:address, user:[:address]).page(params[:page])
    render template: 'events/index'
end

def myevents
  @q = current_user.events.search(params[:q])
  @events = @q.result.includes(:address, user:[:address]).page(params[:page])
  render template: 'events/index'
end

end

注意未来的范围     范围:未来, - &gt; {where('rdv&gt; =?',Date.today)} 端

除了在即将发生的事件或我的事件上点击“搜索按钮”之后,一切正常,搜索呈现事件#index action,因此忽略“future”范围,因为current_user是。

我知道我可以在路线中定义搜索搜索,并添加卡片#search action,但

  

问题:如何在点击搜索按钮后让我的活动#即将到来?事件相同#ecoming和事件#myevents

也许我的逻辑错了。非常感谢你的帮助

请注意,我没有使用post,因为我已经将will_paginate用于ajax,而且我只能使它与get方法一起使用。

1 个答案:

答案 0 :(得分:0)

更改每个search_form_for以指定要加载结果的页面的路径,例如:

<%= search_form_for @q, url: your_path do |f| %>