Ruby on rails Rails 3中的RESTful路由帮助

Ruby on rails Rails 3中的RESTful路由帮助,ruby-on-rails,ruby-on-rails-3,routes,Ruby On Rails,Ruby On Rails 3,Routes,我正在使用Rails 3、Desive和Mongoid 我相信我可以使用RESTful路由完成我需要的任务,但我不知道如何做到。让我解释一下我所拥有的以及我正在努力做的事情 假设我有两个控制器-User和Simpleform Simpleform是一种面向公众的表单(无需身份验证),提交时会显示在用户的帐户中(当用户登录时) 我在系统上有多个用户,每个人都会看到特定于他们的表单提交 所以问题是,如何让面向公众的表单提交到特定用户的帐户 到目前为止,填写新表单的途径类似于“site.com/sim

我正在使用Rails 3、Desive和Mongoid

我相信我可以使用RESTful路由完成我需要的任务,但我不知道如何做到。让我解释一下我所拥有的以及我正在努力做的事情

假设我有两个控制器-User和Simpleform

Simpleform是一种面向公众的表单(无需身份验证),提交时会显示在用户的帐户中(当用户登录时)

我在系统上有多个用户,每个人都会看到特定于他们的表单提交

所以问题是,如何让面向公众的表单提交到特定用户的帐户

到目前为止,填写新表单的途径类似于“site.com/simpleform/new”。我想我可以使用路由使它看起来像“site.com/simpleform/user\u id/new”或“site.com/user\u id/simpleform/new”。我想这两种方法都可以。现在,当表单由公众提交时,由于url中的用户id,应用程序也知道要关联哪个用户


我认为逻辑是有效的,RESTful路由可以实现这一点,但我不确定如何做到这一点。

每个用户资源都有一个关联的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"}

请你澄清一下好吗。您说提交Simpleform不需要身份验证,但希望它与用户关联?不知何故,您必须提供一个用户ID来将Simpleform与用户关联起来。用户提交表单时必须登录(一个简单的嵌套资源)。或者表单必须包含一个用户ID字段(允许任何人将simpleform与任何用户关联)。您希望用户在访问和提交SimpleForm之前先登录吗?还是希望任何人看到SimpleForm,然后在尝试提交表单时被迫登录?两者都不需要。假设你有A公司和“公众(很多人)”。A公司在我的应用程序中有一个帐户,并且有一个他们想放在网站上的表单。任何人都可以在A公司的网站上填写表格并提交(无需认证)。但是,公司A需要登录系统才能查看提交的表单。有几家公司在我的应用程序中有帐户,所以我需要一种方法来知道何时提交面向公众的表单,该表单属于哪家公司。因此,解决方案是在表单的url中包含公司ID。这有意义吗?这很有效。我必须找出表单不同方面(编辑、新建、显示等)的一些身份验证权限,但这不是问题的一部分。谢谢你的帮助。