导轨3带有ajax创建的形式

时间:2011-02-11 19:19:05

标签: ruby-on-rails-3

我想创建一个用户可以修改该页面上的数据的页面。 所以我尝试使用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>

1 个答案:

答案 0 :(得分:0)

路由错误通常由以下原因之一引起:

  1. 您没有在routes.rb中指定的路由。在命令行运行“rake routes”,看看是否显示“/ projects /:id”之类的东西。如果不是,则必须通过添加项目资源或手动指定路径来添加路径。确保HTTP方法与routes.rb中指定的HTTP谓词匹配。

  2. 您没有名为ProjectsController的控制器或没有创建方法(如果您的ajax方法正在发布)或没有更新方法(如果它的推出)。