【问题标题】:Link_to a named scope with attribute [closed]链接到具有属性的命名范围[关闭]
【发布时间】:2012-12-14 17:46:10
【问题描述】:

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

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

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

【问题讨论】:

  • 嗨,您在Plataform 模型中使用:has_many :games 吗?
  • Has_and_belongs_to_many准确地说

标签: ruby-on-rails named-scope


【解决方案1】:

如果你使用 :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-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2018-02-23
  • 2017-06-09
相关资源
最近更新 更多