-2

经过一个下午的网络搜索。我得问你。

在我的应用程序中,我有一个与一个或多个平台相关联的游戏列表。我想向用户提出一些基于平台的过滤器。

我知道我必须使用具有属性的命名范围。但我不知道如何制作链接

4

1 回答 1

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 中的参数按平台过滤:

def index
  @games = params[:plataform] ? Plataform.find(params[:plataform]).games : Game.all
end

在意见中:

<%= link_to games_path(:plataform => @plataform.id) %>
于 2012-12-14T18:22:56.817 回答