Ну, у вас есть два варианта. Если вы действительно думаете, что: шляпа заслуживает отдельного ресурса (и просто наличие отношения «принадлежат к» не подразумевает этого), то я просто надеюсь, что вы не забыли о создании HatController.
На второй руке вы можете быть просто счастливы с дополнительным маршрутом участника:
resources :users do
match :hat, :via => [:get, :post], :on => :member
end
В этом случае вам нужно действие "шляпа" в UsersController.
Немного больше вашего кода будет полезно.
EDIT
Я только что проверил это сам, и предположение правильно, и это работает:
>curl http://localhost:3000/users/1/hat
<!DOCTYPE html>
<html>
<head>
<title>Utest</title>
<link href="/stylesheets/scaffold.css?1304678667" media="screen" rel="stylesheet" type="text/css" />
<script src="/javascripts/prototype.js?1304678590" type="text/javascript"></script>
<script src="/javascripts/effects.js?1304678590" type="text/javascript"></script>
<script src="/javascripts/dragdrop.js?1304678590" type="text/javascript"></script>
<script src="/javascripts/controls.js?1304678590" type="text/javascript"></script>
<script src="/javascripts/rails.js?1304678590" type="text/javascript"></script>
<script src="/javascripts/application.js?1304678590" type="text/javascript"></script>
<meta name="csrf-param" content="authenticity_token"/>
<meta name="csrf-token" content="6RvaQqHxYGFih2vh+3UmHJnqYPfVh/dqdpkLwva6Yko="/>
</head>
<body>
HatController#Show
<a href="/users/1/hat">Self</a>
</body>
</html>
В моем случае мне просто пришлось форсировать единственную форму для контроллера, но это, вероятно, моя ошибка где-то:
resources :users do
resource :hat, :controller => :hat
end