2011-02-17 74 views
1

我在我的控制器中使用以下內容來使用ajax將任務添加到我的項目模型中。Chrome瀏覽器找不到部分

def task_add 
    project = Project.find(params[:project]) 
    @task = ProjectTask.new(:description => params[:description]) 
    project.project_tasks << @task 
    render :partial => 'task' 
end 

和我的Ajax調用:

$('#task-add').click(function(){ 
    var taskDesc = $('#task-description').val(); 

    $.ajax({ 
     type: "POST", 
     url: "/project_task_add", 
     data: ({project:<%= @project.id %>, description:taskDesc}), 
     success: function(data){ 
      var data = $('<div/>').append(data); 
      $('#tasks').append($('#new-task', data).html()); 
     } 
    });   
}); 

它工作在Firefox罰款,但Chrome瀏覽器提供了以下錯誤:

Failed to load resource: the server responded with a status of 500 (Internal Server Error) 

挖在Chrome瀏覽器開發工具,我發現下面的響應更深:

<h1>Template is missing</h1> 
<p>Missing partial projects/task with {:locale=&gt;[:en, :en], :formats=&gt;[:js,   :&quot;*/*&quot;], :handlers=&gt;[:erb, :rjs, :rhtml, :builder, :rxml]} in view paths &quot;/home/user/apps/my_app/app/views&quot;, &quot;/usr/lib/ruby/gems/1.8/gems/devise-1.1.5/app/views&quot;</p> 

部分中的_task.html.erb存在於/ views/projects /和Firefox中,可以很好地呈現出來。我不明白Chrome中有什麼不同......有什麼想法?

+1

請求的方法是:js,你是否使用link_to_remote helper?我認爲欄杆試圖渲染_task.js.rjs而不是_task.html.erb ...發佈與你的動作和你的routes.rb相關的表單以獲取更多幫助!再見 – andrea 2011-02-17 19:39:12

+0

請包括您用於撥打電話的JavaScript代碼。 – 2011-02-17 19:39:36

回答

0

請求的方法是:。JS。 我認爲Rails是嘗試呈現_task.js.rjs不_task.html.erb。 你可以明確這

render :partial => 'projects/task.html.erb' 

,但我認爲你可以改變從至極請求視圖生成,使他們不有params m ethod js或呈現ajax響應。

發佈您的看法,如果你想更多的幫助!

0

此期待您的部分被稱爲app/views/projects/task.js.erb(如您的錯誤的formats部分想通了,不app/views/projects/task.html.erb你可能只擁有html部分定義