我的馆藏模型有这样的范围
scope :got, -> { where(status: 'Got') }
我有一个索引链接如下
<%= user_collections_path(@user, got: true) %>
感谢has_scope gem创建用户集合的索引,其状态为:'Got'。路径是
用户/用户1 /集合?得了=真
在该索引视图中,我希望能够编写类似
的内容<% if status: 'Got' %>
You have these ones
<% end %>
但无论我如何编写它,我似乎无法查询链接中传递的范围。有没有一种标准的方法呢?
答案 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 %>