사용자가 해당 페이지의 데이터를 수정할 수있는 페이지를 만들고 싶습니다. 그래서 ajax 호출을 사용하여 원래 데이터 테이블 행을 양식으로 대체하려고했습니다. 새 양식을 만들고 현재 내 코드로 행을 바꿀 수 있습니다. 그러나 해당 형식의 데이터를 편집하고 '업데이트'를 클릭하면 아무 일도 일어나지 않습니다. 내 콘솔에서 다음과 같은 내용을 보여줍니다.ajax로 작성된 레일 3
ActionController::RoutingError (No route matches "/projects/5"):
왜 작동하지 않는지 알 수 없습니다.
코드는로 표시되는 다음
index.html.erb
<tr>
<th>Name</th>
<th></th>
<th></th>
</tr>
<% @projects.each do |project| %>
<tr id="project_<%= project.id %>">
<td><%= link_to project.name, project %></td>
<td><%= link_to 'Edit', edit_project_path(project), :method => :get, :remote => true %></td>
<td><%= link_to 'Destroy', project, :confirm => 'Are you sure?', :method => :delete , :remote => true %></td>
</tr>
<% end %>
edit.js.erb
$('#project_<%= @project.id%>').replaceWith("<%= escape_javascript(render :partial=>'edit') %>");
_edit.html.erb
<tr id="project_<%= @project.id%>">
<%= form_for(@project, :remote => true) do |f| %>
<%= form_authenticity_token %>
<td><%= f.text_field :name %></td>
<td><%= f.submit 'Update' %></td>
<td><%= link_to 'Destroy', @project, :confirm => 'Are you sure?', :method => :delete , :remote => true %></td>
<% end %>
</tr>
경로가 있지만 네, PUT입니다. ajax를 사용하지 않고 index.html.erb에 동일한 코드를 생성하기 위해 동일한 템플릿 인 _edit.html.erb를 사용했습니다. 모든 것이 효과가있었습니다. 생성 된 코드 아약스가 튀어 나왔습니다. 그것은 숨겨진 입력 데이터 _method = put을 가졌습니다. 아약스 삽입 코드가 페이지로드시 바인드해야하는 일부 js 함수를 바인드하지 않았습니까? 어떻게 수정해야합니까? – Shenk