我可以查询当前范围吗?

时间:2014-06-26 15:36:34

标签: ruby-on-rails ruby-on-rails-4 named-scope

我的馆藏模型有这样的范围

scope :got, -> { where(status: 'Got') }

我有一个索引链接如下

<%= user_collections_path(@user, got: true) %>

感谢has_scope gem创建用户集合的索引,其状态为:'Got'。路径是

  

用户/用户1 /集合?得了=真

在该索引视图中,我希望能够编写类似

的内容
<% if status: 'Got' %>
   You have these ones
<% end %>

但无论我如何编写它,我似乎无法查询链接中传递的范围。有没有一种标准的方法呢?

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

<% if params[:got].to_s == 'true' %>
   You have these ones
<% end %>

但是这会强制您使用true作为params[:got]的值。也许这更好:

<% if params[:got].present? %>
   You have these ones
<% end %>

但这可以与params一起使用:

  • users/user1/collections?got=true
  • users/user1/collections?got=false
  • users/user1/collections?got=NOPE

实际上,has_scope gem提供了一个方法current_scopes,它返回相应视图中的散列(key = scope,value =赋予作用域的值)。你应该能够这样做:

<% if current_scopes[:got].present? %>
   You have these ones
<% end %>