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";
}
});
通過StarController旁加工評論說輪廓JSON。看看你的控制器中的格式是什麼,以確保它是html或js。如果格式是json,這將解釋爲什麼你得到406,因爲你的控制器沒有處理該格式。 – Keith
當我添加format.json,解決'406錯誤代碼',但我需要*** profile.js.erb ***得到渲染不json – katie
我認爲你必須在您的請求中設置接受頭'應用程序/ javascript',不知道該怎麼做,雖然,檢查http://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings – juanpastas