2011-02-11 128 views
0

我想創建一個頁面,用戶可以修改該頁面上的數據。 所以我嘗試使用ajax調用來將原始數據錶行替換爲表單。 可以創建新表單並用當前代碼替換該行。但是,在編輯完數據後點擊「更新」,什麼也沒有發生。在我的控制檯顯示類似於:rails 3 with ajax created

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

路由錯誤通常很重要sed以下之一:

  1. 您沒有在routes.rb中指定的路由。在命令行運行「rake routes」,看看是否有類似「/ projects /:id」的東西出現。如果不是,則必須通過添加項目資源或手動指定路線來添加路線。確保HTTP方法與routes.rb中指定的HTTP謂詞相匹配。

  2. 你有沒有一份名爲ProjectsController或沒有create方法(如果您的AJAX方法發佈)控制器或沒有更新方法(如果它的投入)。

+0

路線,但存在的,是的,我們把。我用同樣的模板,_edit.html.erb,不使用Ajax生成index.html.erb相同的代碼。每件事都有效。我刪除了生成的代碼ajax。它有一個隱藏的輸入數據,_method = put。 ajax插入的代碼是不是綁定一些js函數,當頁面加載時應該綁定?我如何解決它? – Shenk 2011-02-12 12:07:35