RESTful Routes帮助Rails 3

时间:2011-04-28 21:25:29

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

我正在使用Rails 3,Devise和Mongoid。

我相信我可以使用RESTful Routes完成我需要的工作,但我不知道该怎么做。让我解释一下我的想法以及我想要做的事情。

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

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

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

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

截至目前,填写新表单的路线看起来像“site.com/simpleform/new”。我想我可以使用路由使其看起来像“site.com/simpleform/user_id/new”或“site.com/user_id/simpleform/new”。我认为这两种变化都可行。现在,当公众中的某个人提交表单时,由于url中的user_id,应用程序也知道要关联哪个用户。

我认为逻辑有效,RESTful Routes可以实现,我只是不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

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