经过一个下午的网络搜索支出。我不得不问你。
在我的应用中,我有一个游戏列表,其中包含一个或多个平台。我想向用户提出一些基于该平台的过滤器。
我知道我必须使用带有属性的命名范围。但我不知道如何建立链接
答案 0 :(得分:2)
如果你使用:has_and_belongs_to_many
一个懒惰的方法来做这个就是让所有游戏和游戏成为所有游戏的uniq阵列:
@games = @plataforms.map(&:games).uniq
如果您使用:has_many
:
# in your game model
scope :by_plataforms, lambda { |plataforms_ids| where(:plataform_id => plataforms_ids) }
示例通话:Game.by_plataforms([1, 2, 3])
修改强>
要创建路线,您可以使用GamesController中的参数按plataform进行过滤:
def index
@games = params[:plataform] ? Plataform.find(params[:plataform]).games : Game.all
end
在观点中:
<%= link_to games_path(:plataform => @plataform.id) %>