我使用Rails 3,设计和Mongoid。
我相信我可以完成我需要使用RESTful路由,但我不确定如何做到这一点。让我解释一下我有什么和我要做什么。
假设我有两个控制器- User和Simpleform。
Simpleform是一个面向公众的表单(不需要身份验证),当提交时显示在用户的帐户中(当他们登录时)。
我在系统上有多个用户,每个用户都将看到特定于他们的表单提交。
问题是,如何让面向公众的表单提交到特定用户的帐户?
到目前为止,填写新表单的路径看起来像这样"site.com/simpleform/new"。我想我可以使用路由使它看起来像"site.com/simpleform/user_id/new"或"site.com/user_id/simpleform/new"。我认为两种变体都可以。现在,当表单从公众中提交时,应用程序也知道要关联哪个用户,因为url中的user_id。
我认为逻辑工作和RESTful路由可以使它发生,我只是不确定如何做到这一点。
每个User资源都有一个关联的SimpleForm资源。
所以我认为你的路线应该是这样的:
resources :users do
resource :simpleform
end
和路由看起来像:
user_simpleform POST /users/:user_id/simpleform(.:format) {:action=>"create", :controller=>"simpleforms"}
new_user_simpleform GET /users/:user_id/simpleform/new(.:format) {:action=>"new", :controller=>"simpleforms"}
edit_user_simpleform GET /users/:user_id/simpleform/edit(.:format) {:action=>"edit", :controller=>"simpleforms"}
GET /users/:user_id/simpleform(.:format) {:action=>"show", :controller=>"simpleforms"}
PUT /users/:user_id/simpleform(.:format) {:action=>"update", :controller=>"simpleforms"}
DELETE /users/:user_id/simpleform(.:format) {:action=>"destroy", :controller=>"simpleforms"}
users GET /users(.:format) {:action=>"index", :controller=>"users"}
POST /users(.:format) {:action=>"create", :controller=>"users"}
new_user GET /users/new(.:format) {:action=>"new", :controller=>"users"}
edit_user GET /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
user GET /users/:id(.:format) {:action=>"show", :controller=>"users"}
PUT /users/:id(.:format) {:action=>"update", :controller=>"users"}
DELETE /users/:id(.:format) {:action=>"destroy", :controller=>"users"}