我有一个模型叫client
,另一个模型叫client_preference
。它们之间的关系是一个client
有多个client_preferences
。现在我想创建更新和删除client_preferences
的方法。为此,我生成如下路由:
map.resources :clients do |client|
client.resources :client_preferences, only: [:edit, :update, :destroy]
end
我得到以下命名的路由:
edit_client_client_preference GET /clients/:client_id/client_preferences/:id/edit(.:format) {:controller=>"client_preferences", :action=>"edit"}
client_client_preference PUT /clients/:client_id/client_preferences/:id(.:format) {:controller=>"client_preferences", :action=>"update"}
DELETE /clients/:client_id/client_preferences/:id(.:format) {:controller=>"client_preferences", :action=>"destroy"}
现在,我想自定义从client_client_preference
到client_preference
的路由名称,类似地为生成的其他路由定制,以便客户端在生成的路径名称中不重复两次。有办法做到这一点,还是我需要手动定义路由?
使用:as
选项应该允许创建更干净的命名帮助器:
map.resources :clients do |client|
client.resources :client_preferences, only: [:edit, :update, :destroy], as: 'preference'
end
现在应该映射到client_preference
。
希望有帮助!
有一个关键字:as
,它可以帮助您在Rails中创建自定义的路径名。也有现有的答案这个问题:Rails 3嵌套资源短名称?