J'utilise un formulaire pour ajouter une entrée, et j'ai besoin d'envoyer l'identifiant de l'utilisateur courant avec les paramètres d'entrée. Voici ma forme de code:RoR form_for: Le champ masqué n'est pas inclus dans le paramètre d'objet et ne fonctionne donc pas.
<% form_for(@entry) do |f| %>
<%= f.error_messages %>
<%= hidden_field_tag 'user_id', current_user.id %>
<p>
<%= f.label :date %><br />
<%= f.date_select :date %>
</p>
<p>
<%= f.label :note %><br />
<%= f.text_field :note %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>
Le problème est que user_id est en cours d'enregistrement comme nul. J'ai remarqué dans la sortie de la console ci-dessous que user_id est présent, mais il n'est pas réellement situé dans les paramètres d'objet d'entrée. Comment puis-je réparer cela? Merci d'avoir lu.
Processing EntriesController#create (for 127.0.0.1 at 2010-07-09 19:57:55) [POST]
Parameters: {"commit"=>"Create", "action"=>"create", "user_id"=>"3", "entry"=>{"date(1i)"=>"2010", "date(2i)"=>"7", "date(3i)"=>"9", "note"=>"bb"}, "controller"=>"entries"}
Entry Create (0.4ms) INSERT INTO "entries" ("entry_id", "created_at", "updated_at", "date", "user_id", "note") VALUES(NULL, '2010-07-09 09:57:55', '2010-07-09 09:57:55', '2010-07-09', NULL, 'bb')
Redirected to http://localhost:3000/entries/7
Completed in 24ms (DB: 0) | 302 Found [http://localhost/entries]
Je sais que c'est vieux, mais je voulais simplement mettre à jour votre réponse car il ne semble pas fonctionner pour Rails 3.0. 7. Je recevais une erreur liée à la fusion, donc j'ai dû google quelques endroits pour trouver ceci: '<% = f.hidden_field: user_id,: value => current_user.id%>' –
@EricHu - vous devriez soumettre votre commenter comme une réponse, chaque fois que j'ai besoin de faire cela, je me réfère à votre commentaire! – DaveStephens
@RiPuk Fait! J'espère que cela t'aides! –