2011-04-28 92 views
0

我正在使用Rails 3,Devise和Mongoid。RESTful路線幫助Rails 3

我相信我可以用RESTful Routes完成我所需要的工作,但我不知道該怎麼做。讓我解釋我有什麼和我正在嘗試做什麼。

比方說,我有兩個控制器 - 用戶和Simpleform。

Simpleform是一種面向公衆的形式(無需認證),當提交時顯示在用戶帳戶中(登錄時)。

我在系統上有多個用戶,每個用戶都會看到特定於他們的表單提交。

所以問題是,我如何獲得面向公衆的表單提交給特定用戶的帳戶?

截至目前,填寫新表單的路徑如下所示:「site.com/simpleform/new」。我想我可以使用路線使其看起來像「site.com/simpleform/user_id/new」或「site.com/user_id/simpleform/new」。任何變化都會起作用。現在,當表單由公衆中的某個人提交時,由於url中的user_id,應用程序也知道要將其關聯的用戶。

我認爲邏輯工作和RESTful路線可以使它發生,我只是不知道該怎麼做。

+0

你能澄清,請。你說不需要認證提交Simpleform,但你希望它與用戶相關聯?不知何故,你必須提供一個用戶ID來將Simpleform與用戶關聯起來。當他/她提交表單時(一個簡單的嵌套資源),用戶必須登錄。或者表單必須包含用戶ID字段(允許任何人將簡單表單​​與任何用戶關聯)。你希望在用戶訪問並提交SimpleForm之前要求用戶登錄嗎? – 2011-04-28 22:00:04

+0

或者你想讓任何人看到SimpleForm,然後在他們嘗試提交表單時被迫登錄? – 2011-04-28 22:01:41

+0

都不是。假設你有公司A和「公衆(很多人)」。公司A有一個我的應用程序的帳戶,並有一個表格,他們希望把他們的網站。任何人都可以填寫A公司網站上的表格並提交(不需要認證)。但是,公司A需要登錄系統才能看到提交的表單。有幾家公司在我的應用程序中有帳戶,所以我需要一種方法來了解何時向公衆提交一份公開的表單。因此,公司ID在表單的url中的解決方案。這是否更有意義? – sevens 2011-04-28 22:10:00

回答

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"} 
+0

這工作。我必須弄清楚表單的不同方面的一些認證權限(編輯vs新的vs show等) - 但這不是這個問題的一部分。謝謝您的幫助。 – sevens 2011-04-28 22:30:34