J'ai un _form.html.erb partielle qui vient du modèle de rails standard 3 pour le projet de modèle.rails format ajax demandé a la mauvaise méthode
#view:
<div id="content">
<%= link_to 'Edit', edit_project_path(@project), :remote => :true %>
</div>
#projects controllers
def edit
@project = Project.find(params[:id])
respond_to do |format|
format.html # edit.html.erb
format.js { render "form.js.rjs" }
end
end
#form.js.rjs
page.replace_html "content", :partial => 'form'
#_form.html.erb
<%= form_for(@project) do |f| %>
<% if @project.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@project.errors.count, "error") %> prohibited this project from being saved:</h2>
<ul>
<% @project.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<p>
<%= f.label :name %>
<%= f.text_field :name %>
</p>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Alors que je clique sur ce lien pour modifier un projet, le formulaire ne vient à travers à travers ajax, mais la méthode du formulaire est maintenant afficher au lieu de vente. ce qui signifie que, comme je le soumets, il va créer de nouveaux projets avec les mêmes attributs que l'existant que je suis en train de modifier b/c de la méthode de création qui est appelée lors de la réception d'une demande de publication. Je sais que form_for (@project) compte sur l'ID d'enregistrement pour dire si c'est nouveau ou non, j'ai regardé toutes les sources pour form_for, form_tag, extras_tags_for_form, form_tag_html mais ne trouve pas d'endroit où ils spécifient quelle méthode pour le La balise de forme doit être utilisée. L'endroit le plus proche où il définit la méthode est dans extra_tags_for_form, mais dans cette méthode, il passe simplement à travers le hash d'option de méthode qui lui est déjà passé, mais d'où est-ce: l'option de méthode est passée? Je ne peux pas trouver.
des idées?