Désolé pour le titre semi-générique, mais je suis encore assez nouveau à rails et ne pouvais pas penser à une manière succincte de poser la question.Rails a-et-appartient-à-plusieurs forme question
J'ai une configuration de base habtm modèle: un projet a de nombreuses ressources et une ressource peut avoir de nombreux projets. J'ai la configuration de la base de données et des modèles correctement, et je peux faire tout ce dont j'ai besoin via la console, mais j'ai du mal à tout traduire dans la vue.
Sur la vue show
pour le projet, je souhaite créer une ressource et l'affecter automatiquement au projet en cours. Voici mon html de base:
<p>
<b>Name:</b>
<%=h @project.name %>
</p>
<h2>Equipment</h2>
<ul>
<% @project.resources.each do |r| %>
<li><%=h r.name %></li>
<% end %>
</ul>
<h2>Add A Resource</h2>
<% form_for(@project) do |f| %>
<%= f.error_messages %>
<p>
Resource Name:<br />
<%= f.text_field :resources %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>
De toute évidence, cette forme ne fonctionnera pas, mais je suis à une perte pour quoi faire. J'ai cherché des exemples variés, mais je n'en ai pas trouvé un pour ce que j'essaie de faire ici.
Une chose que j'ai pensé était de changer le formulaire pour être form_for(Resource.new)
et inclure une entrée cachée du @project.id
. Et puis, lorsque le resource_controller
gère le formulaire, vérifiez cet ID et allez à partir de là. Cela ressemble à un vilain kludge cependant.
Cela a aidé, je me rapproche! Dans mon project_controller, ce paramètre est passé: 'project' => {"resources" => {"name" => "Nouvelle ressource"}} 'Comment puis-je créer un nouvel objet Ressource à partir de ça? J'ai essayé "@new_resource = @ project.resources.build (params [: resources]) "mais cela n'a pas fonctionné Merci encore – swilliams
Je crois que le droit est' @ project.resources.build (params [: projet] [: resources]) ' –
Ha, ouais je l'ai juste deviné moi aussi Merci – swilliams