2011-04-28 3 views
0

J'utilise Rails 3, Devise et Mongoid. Je crois que je peux accomplir ce dont j'ai besoin en utilisant des routes RESTful mais je ne suis pas sûr de savoir comment le faire. Laissez-moi vous expliquer ce que j'ai et ce que j'essaie de faire.RESTful Routes aide dans Rails 3

Disons que j'ai deux contrôleurs - User et Simpleform. Le formulaire simple est un formulaire public (aucune authentification requise) qui, une fois soumis, apparaît dans le compte d'un utilisateur (lors de sa connexion).

J'ai des utilisateurs multipul sur le système et chacun verra les soumissions de formulaire qui leur sont spécifiques. Donc, la question est, comment puis-je obtenir le formulaire public à soumettre au compte d'un utilisateur spécifique?

A partir de maintenant la route pour remplir un nouveau formulaire ressemble à ceci "site.com/simpleform/new". Je pense que je peux utiliser des routes pour faire ressembler cela à "site.com/simpleform/user_id/new" ou "site.com/user_id/simpleform/new". L'une ou l'autre variante fonctionnerait je pense. Maintenant, lorsque le formulaire est soumis par quelqu'un dans le public, l'application sait quel utilisateur l'associer aussi à cause de l'id_utilisateur dans l'URL.

Je pense que la logique fonctionne et les routes RESTful peuvent y arriver, je ne suis pas sûr de savoir comment le faire.

+0

pouvez-vous préciser, s'il vous plaît. Vous dites qu'aucune authentification ne sera requise pour soumettre un Simpleform mais que vous voulez qu'il soit associé à un utilisateur? D'une manière ou d'une autre, vous devez fournir un ID utilisateur pour associer Simpleform à l'utilisateur. Soit l'utilisateur doit être connecté lorsqu'il soumet le formulaire (une ressource imbriquée simple). Ou le formulaire doit inclure un champ pour l'ID utilisateur (permettant à quiconque d'associer le formulaire simple à n'importe quel utilisateur). Souhaitez-vous demander à un utilisateur de se connecter avant de pouvoir accéder et soumettre le formulaire SimpleForm? –

+0

Ou voulez-vous que quelqu'un voie le SimpleForm et soit obligé de se connecter quand il essaie de soumettre le formulaire? –

+0

Ni l'un ni l'autre. Disons que vous avez la société A et "le public (beaucoup de gens)". La société A a un compte avec mon application et a un formulaire qu'ils veulent mettre sur leur site. Tout le monde peut remplir le formulaire sur le site de la société A et le soumettre (aucune authentification requise). Cependant, la société A doit se connecter au système afin de voir le formulaire soumis. Plusieurs entreprises ont des comptes avec mon application, j'ai donc besoin d'un moyen de savoir quand un formulaire public est soumis à quelle entreprise il appartient. Ainsi, la solution d'avoir l'ID de l'entreprise dans l'url du formulaire. Cela fait-il un peu plus de sens? – sevens

Répondre

1

Chaque ressource utilisateur possède une ressource SimpleForm associée.

Je crois donc que votre itinéraire serait comme:

resources :users do 
    resource :simpleform 
    end 

Et routes ressemblerais:

 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

Cela a fonctionné. Je dois comprendre certaines des permissions d'authentification avec différents aspects du formulaire (modifier vs nouveau vs show etc) - mais cela ne fait pas partie de cette question. Merci pour l'aide. – sevens