2011-10-04 50 views
0

我在rails中使用rjs模板實現了destroy功能。當從數據庫中銷燬一條記錄時,出現「XML分析錯誤:找不到元素」錯誤。這是我的編碼嗎?XML解析錯誤:在rails中使用rjs時找不到元素

我用下面的版本Ruby和Rails: 的Ruby版本:1.8.7 Rails的版本:2.3.8

Controller file: 

    def destroy 
    begin 
     @task = Task.find(params[:id]) 
     @task.destroy 

     respond_to do |format| 
     #format.html { redirect_to(tasks_url) } 
     format.js 
    format.xml { head :ok } 
     end 
    rescue Exception => e 
    puts e 
    end 

end 

局部模板文件_task.html.erb:

<tr id="<%= dom_id(task) %>"> 
<td><%= task.name %></td> 
<td><%= task.note %></td> 
<td><%= task.priority %></td> 
<td><%= link_to 'Show', task %></td> 
<td><%= link_to 'Edit', edit_task_path(task) %></td> 
<td> 
<%= link_to 'Destroy', task, :confirm => 'Are you sure?', :method =>:delete,:remote => :true %>  

index.rhtml裏的文件:

<div id='newform'> 
    <% form_for([@task, Task.new]) do |f| %> 
<div> 
    <%= f.label 'Add a new task: ' %> 
    <%= f.text_field :name %> 
</div> 
<div> 
    <%= f.submit %> 
</div> 
    <% end %> 
</div> 

<table id="alltasks"> 
<tr id="tablehead"> 
<th>Name</th> 
<th>Note</th> 
<th>Priority</th> 
<th></th> 
<th></th> 
<th></th> 
</tr> 

<%= render @tasks %> 
<!-- expanded: render :partial => "task", :collection => @tasks --> 
    </table> 
    <br /> 
<%= link_to 'New Task', new_task_path %> 

destroy.js.rjs文件:

page.alert('Hi') 

回答

0

的問題,即XML格式是從您的破壞作用,而不是JS格式要求的,並且事情是試圖解析產生的空XML響應通過控制器中的format.xml { head :ok }行。它曾經是你可以逃脫空的XML響應,但它也看起來像你使用不顯眼的JavaScript,並在ujs某處試圖解析它。

一個可能的解決方案是生成一個產生簡單響應的destroy.xml.builder視圖,並將控制器操作更改爲format.xml { render :layout => false }或類似內容。您還可以通過更改鏈接請求的數據類型來做一些有趣的事情,但是我建議避免這種情況,除非您真的想在destroy.js.rjs中使用您的js響應。

相關問題