具有除以下列之外的列的嵌套资源:id

时间:2013-06-22 14:34:38

标签: ruby ruby-on-rails-3 rails-routing

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

resources :games do
  resources :states
end

State有一个turn列,游戏是唯一的,即有许多状态具有相同的转弯(例如1),但对于游戏235,只有一个转弯= 1的州。

嵌套资源会生成/games/:game_id/states/:id形式的网址,而我需要/games/:game_id/states/:turn

我将如何做到这一点?

1 个答案:

答案 0 :(得分:2)

State模型中,添加此方法:

def to_param
  turn
end

现在,在您的网址路径中,您所要做的就是传递游戏和状态对象,如下所示:

game_state_path(@game, @state)

由于您定义了to_param,因此将使用状态的属性turn代替其id

现在,您所要做的就是更改控制器中的finder方法:

find_by_state(params[:id])

有关详细信息,请查看Friendly URLs上的有用指南。