1

在我的Rails應用程序中,javascript模板profile.js.erb不會呈現。我收到錯誤代碼406 Not Acceptable。這個模板應該在視圖中追加一個局部星號#profile。 Ajax請求由jquery無限滾動插件完成。這裏是我的代碼Ajax請求返回(406不可接受)

動作

def profile 
@page=params[:page] ||1 
@videos=Video.all(:page=>@page) 
respond_to do |format| 
format.js 
format.html 
    end 
end 

視圖星#輪廓

<div id="content"> 
<div class="post"> 
<%=render 'videos'%> 
</div> 

profile.js.erb

$('div.post').append("<%=escape_javascript(render 'videos')%>"); 

個路由

 match "stars/profile/:page"=> "stars#profile", :via => :get 

日誌中控制檯

Started GET "/stars/profile?page=2" for 127.0.0.1 at 2013-06-20 00:05:58 -0500 
Processing by StarsController#profile as application/JavaScript 
Parameters: {"page"=>"2"} 
Completed 406 Not Acceptable in 65836ms 

的Ajax設置

jQuery.ajaxSetup({ 
    'beforeSend': function(xhr, settings) { 
    xhr.setRequestHeader("Accept", "application/javascript"); 
    var token=$('meta[name="csrf-token"]').attr('content'); 
    xhr.setRequestHeader('X-CSRF-Token',token); 
    settings['dataType'] = "javascript"; 
    settings['contentType'] = "application/javascript"; 
    } 

});

+0

通過StarController旁加工評論說輪廓JSON。看看你的控制器中的格式是什麼,以確保它是html或js。如果格式是json,這將解釋爲什麼你得到406,因爲你的控制器沒有處理該格式。 – Keith

+0

當我添加format.json,解決'406錯誤代碼',但我需要*** profile.js.erb ***得到渲染不json – katie

+0

我認爲你必須在您的請求中設置接受頭'應用程序/ javascript',不知道該怎麼做,雖然,檢查http://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings – juanpastas

回答

0

從日誌: GET「/ stars/profile?page = 2」不包括配置文件後的.js。所以rails不會在javascript中處理它。

GET「/stars/profile.js?page=2」應該是通話..