Ruby 列不是:id的嵌套资源

Ruby 列不是:id的嵌套资源,ruby,ruby-on-rails-3,rails-routing,Ruby,Ruby On Rails 3,Rails Routing,我有一个名为state的嵌套资源,它属于名为game的资源: 资源:游戏可以吗 资源:国家 结束 状态有一个回合列,该列在游戏中是唯一的,即有许多状态具有相同的回合(例如,1),但对于游戏235,只有一个状态的回合=1 嵌套资源生成的URL格式为/games/:game\u id/states/:id,而我想要/games/:game\u id/states/:turn 我该怎么做呢?在您的状态模型中,添加以下方法: def to_param turn end 现在,在url路径中,只需

我有一个名为
state
的嵌套资源,它属于名为
game
的资源:

资源:游戏可以吗
资源:国家
结束
状态有一个
回合
列,该列在游戏中是唯一的,即有许多状态具有相同的回合(例如,1),但对于游戏235,只有一个状态的回合=1

嵌套资源生成的URL格式为
/games/:game\u id/states/:id
,而我想要
/games/:game\u id/states/:turn


我该怎么做呢?

在您的
状态
模型中,添加以下方法:

def to_param
  turn
end
现在,在url路径中,只需传递游戏和状态对象,如下所示:

game_state_path(@game, @state)
由于您将其定义为_param,因此将使用状态的属性
turn
,而不是其
id

现在,您只需更改控制器中的finder方法:

find_by_state(params[:id])

有关更多信息,请查看上的本实用指南。

实际上,嵌套这些资源会生成
/games/:games\u id/states/:id
格式的URL。这些还不够满足你的需要吗?我编辑了这个问题来反映这一点。但是,请注意我想要的URL:它的末尾有一个转折点。我想在轮次编号上选择州,而不是在个人id上。所以不,这些还不够满足我的需要!祝福你,善良的先生。我已经把那件事忘得一干二净了。