我想创建一个用户可以修改该页面上的数据的页面。 所以我尝试使用ajax调用将原始数据表行替换为表单。 可以创建新表单并使用我的代码替换该行。但在该表单中编辑数据并单击“更新”后,没有任何反应。在我的控制台中显示如下内容:
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>
答案 0 :(得分:0)
路由错误通常由以下原因之一引起:
您没有在routes.rb中指定的路由。在命令行运行“rake routes”,看看是否显示“/ projects /:id”之类的东西。如果不是,则必须通过添加项目资源或手动指定路径来添加路径。确保HTTP方法与routes.rb中指定的HTTP谓词匹配。
您没有名为ProjectsController的控制器或没有创建方法(如果您的ajax方法正在发布)或没有更新方法(如果它的推出)。