Link_to具有属性的命名范围

时间:2012-12-14 17:46:11

标签: ruby-on-rails named-scope

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

在我的应用中,我有一个游戏列表,其中包含一个或多个平台。我想向用户提出一些基于该平台的过滤器。

我知道我必须使用带有属性的命名范围。但我不知道如何建立链接

1 个答案:

答案 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) %>