Rails 对多个实例进行搜查过滤器
Rails ransack filter on multiple instances
我有一个投票应用程序,允许创建草稿或已发布的投票。管理员可以看到所有。用户只有发布的。
然后我正在使用 ransack 进行过滤。
这是我的控制器:
@q = Poll.includes(:division).includes(:vote_options).ransack(params[:q])
@p = Poll.where(published: '1').includes(:division).includes(:vote_options).ransack(params[:p])
@polls = @q.result.order(:sort)
@published_polls = @p.result.order(:sort)
@display_polls = current_user.admin_role? ? @polls : @published_polls
因为我需要创建两个 Poll 实例,所以我在 @q 旁边添加了 @p。而且我不确定这是正确的方法。
在我看来我有
<% @display_polls.each_with_sortable_id do |poll, sortable_id| %>
对于搜查过滤器,我有:
<%= search_form_for @q, url: polls_path do |f| %>
已发布和未发布的项目按预期正确显示。但是搜查过滤器不起作用。
如何让过滤器重新工作?
我想这可能是因为您的 search_form_for
只在@q 上搜索。我认为这可能是您控制器中更好的方法:
if current_user.admin_role?
@q = Poll.includes(:division, :vote_options).ransack(params[:q])
else
@q = Poll.where(published: '1').includes(:division, :vote_options).ransack(params[:q])
end
@polls = @q.result.order(:sort)
我有一个投票应用程序,允许创建草稿或已发布的投票。管理员可以看到所有。用户只有发布的。 然后我正在使用 ransack 进行过滤。
这是我的控制器:
@q = Poll.includes(:division).includes(:vote_options).ransack(params[:q])
@p = Poll.where(published: '1').includes(:division).includes(:vote_options).ransack(params[:p])
@polls = @q.result.order(:sort)
@published_polls = @p.result.order(:sort)
@display_polls = current_user.admin_role? ? @polls : @published_polls
因为我需要创建两个 Poll 实例,所以我在 @q 旁边添加了 @p。而且我不确定这是正确的方法。
在我看来我有
<% @display_polls.each_with_sortable_id do |poll, sortable_id| %>
对于搜查过滤器,我有:
<%= search_form_for @q, url: polls_path do |f| %>
已发布和未发布的项目按预期正确显示。但是搜查过滤器不起作用。
如何让过滤器重新工作?
我想这可能是因为您的 search_form_for
只在@q 上搜索。我认为这可能是您控制器中更好的方法:
if current_user.admin_role?
@q = Poll.includes(:division, :vote_options).ransack(params[:q])
else
@q = Poll.where(published: '1').includes(:division, :vote_options).ransack(params[:q])
end
@polls = @q.result.order(:sort)