У меня есть часть _form.html.erb, которая исходит из стандартного шаблона рельсов 3 для проекта модели.рельсы ajax запрошенная форма имеет неправильный метод
#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 %>
В то время как я нажимаю на эту ссылку, чтобы изменить проект, форма приходит через через AJAX, но метод для формы теперь опубликовать вместо пут. что означает, что при отправке я создам новые проекты с теми же атрибутами, что и существующий, который я редактирую b/c метода create, который вызван при получении почтового запроса.
Я знаю, что form_for (@project) полагается на идентификатор записи, чтобы определить, является ли это новым или нет, я просмотрел все источники для form_for, form_tag, extras_tags_for_form, form_tag_html, но не могу найти место, где они указывают, какой метод для тег формы. Самое близкое место, где он определяет метод, находится в extra_tags_for_form, но в этом методе он просто просеивается через хэш хэша метода: он уже передан ему, но откуда это происходит: метод option прошел? Я не могу найти.
любые идеи?