2011-06-30 1 views
0

Donc, ce que je voudrais fondamentalement faire est de faire un formulaire de commande. Dans ce formulaire de commande, les utilisateurs vont soumettre des informations sur les membres de leur entreprise, et il y aura également une partie à la fin du formulaire de commande où l'utilisateur peut sélectionner les services d'option qui sont ajoutés par mon client à partir d'un backend. Je suis nouveau sur les rails donc j'aimerais que quelqu'un m'aide à m'assurer que je vais le faire en utilisant la meilleure pratique possible. Voici ce que je pense que je dois faire:Rails débutant aider à faire un formulaire de commande personnalisé

  1. Faire un modèle Commander
  2. Faire un modèle membre
  3. Faire un modèle de terrain

Dans mon modèle d'ordre faire

has_many :members 
has_many :fields 

Dans mon modèle membre faites belongs_to :order et dans mon modèle de terrain faites belongs_to :order. Ensuite, ce que je dois faire dans mon contrôleur de commandes est @fields = Field.all et l'extraire dans un bloc @fields.each.

P.S. il y a une autre chose que je dois faire et c'est de faire le formulaire de commande affiche 3 types d'en-têtes: Corporation, LLC, et à but non lucratif. Ce que je pensais être intelligent est si dans l'url je l'ai fait comme type=1 et type=2 et type=3 et dans mon utilisation du modèle une instruction if comme:

def order_type(type) 
    if type === "1" 
    "corporation" 
    elsif type === "2" 
    "llc" 
    else 
    "nonprofit" 
    end 
end 

Je pense en utilisant une instruction if est un peu bâclé donc pour que si si quelqu'un pouvait m'expliquer s'il vous plaît la meilleure pratique qui serait géniale. S'il vous plait, n'essayez pas de répondre avec un épisode de "railscasts" parce que j'en ai déjà testé beaucoup. Ce que je voudrais une explication si possible

Merci les gars cela signifie beaucoup

Répondre

0

sont vraiment si compliqué vos champs dont ils ont besoin de leur propre modèle? Si vos "champs" sont une liste d'une seule colonne, il suffit de les inclure en tant que colonne dans le modèle, ils sont également appliqués.

Le problème avec l'utilisation de la méthode URL que vous avez suggérée est la suivante. Supposons qu'un utilisateur crée un objet modèle et l'affecte en tant que "LLC". Alors votre URL aurait type = 1 quelque part dedans comme vous l'avez suggéré. Maintenant, un utilisateur marque cette URL et par la suite quelqu'un s'est rendu compte qu'il s'agissait d'une faute de frappe et au lieu de LLC le titre devrait être quelque chose d'autre. Maintenant, vous avez une situation UNRESTful où vous créez des liens morts sur Internet ou vous avez des URL codées. Le codage de l'URL doit être utilisé pour interroger les données sans définir ce que les données doivent être.

Je ne plaisante pas avec les URL pour la question de la rubrique. Au lieu de cela, il suffit d'ajouter un champ d'en-tête au modèle principal qui sera affiché et avoir ce champ soit LLC etc. Ensuite, dans la vue, il suffit d'avoir une variable qui charge dans la valeur pour l'objet affiché.

+0

Donc, fondamentalement, je devrais avoir le nom d'en-tête déterminé par une demande de publication? comme par exemple, ils cliquent sur une boîte de sélection qui forme la commande qu'ils veulent et ensuite il les passe au formulaire de commande sans aucune indication si c'est un corp, llc, ou à but non lucratif dans l'url? – Jake

+0

Ce serait une requête GET et si l'information d'en-tête est stockée dans le cadre du modèle, vous ne ferez pas une demande séparée. C'est juste un autre attribut de l'objet que vous affichez. Vous pouvez utiliser différents modèles pour afficher sélectivement différents champs, mais si la seule différence entre un LLC ou un corp est le texte du titre, alors vous voulez un champ sur votre attribut appelé "order_type". Les utilisateurs créent une nouvelle commande 'domain/order/new' et choisissent un type dans une liste déroulante et l'enregistrent.Si l'utilisateur ne veut voir que des profits, il est facile de filtrer toutes vos commandes par votre colonne "order_type". –

Questions connexes