2009-09-14 7 views
0

s'il vous plaît pardonnez-moi si je pose une question idiote. Après avoir créé le contrôleur, les vues et le modèle à l'aide de scafolding pour l'articleUrl généré pour mettre à jour et créer

Je vois même code à la fois dans les nouvelles vues et éditer.

<% form_for(@article) do |f| %> 
    <%= f.error_messages %> 
    .................. 
    <p> 
    <%= f.submit "Updaggggte" %> 
    </p> 
<% end %> 

quand je vérifie la source de ces pages Nouveau a

<form action="/articles" class="new_article" id="new_article" method="post"><div style="margin:0;padding:0"><input name="authenticity_token" type="hidden" value="757ad93da031eb40a64360318f05e2cc9ada1fc6" /></div> 

Modifier a

<form action="/articles/1" class="edit_article" id="edit_article_1" method="post"><div style="margin:0;padding:0"><input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="757ad93da031eb40a64360318f05e2cc9ada1fc6" /></div> 

Comment est champ caché _method inclus dans la page Modifier ??

Merci à l'avance

Répondre

0

Ce champ est fourni par la méthode d'assistance form_for. Dans le cas d'un nouvel enregistrement, @aritcle.new_record? sera vrai, et puisque vous avez configuré votre application à l'aide d'échafaudages, le modèle Article est mappé en tant que ressource (regardez config/routes.rb), donc la méthode d'assistance saura exactement quelle méthode elle doit utiliser. utiliser pour créer un nouvel enregistrement d'article.

0

Rails contourne ce problème en émulant d'autres méthodes sur POST avec une entrée masquée nommée "_method", qui est définie pour refléter la méthode souhaitée. Si l'objet utilisé dans @model_obj a un identifiant, alors les rails mettent _method à PUT sinon POST. Rails utilise new_record? méthode pour le but.

Questions connexes