2013-01-05 28 views
1

爲什麼我的控制器動作只能以HTML格式返回,即使我明確聲明它只能返回JS類型?爲什麼控制器respond_to被設置爲僅在Ruby on Rails中返回html的js?

應用程序/控制器/ classrooms_controller.rb

def create 
    respond_to do |format| 
    format.js # This doesn't work. 
    end 
end 

應用/視圖/教室/ new.html.haml

= form_tag classrooms_path, :html => {:multipart => true}, do |f| 
    = text_field_tag :name 
    = submit_tag "Done" 

應用/視圖/教室/ create.js.erb

alert('hi'); 

服務器

Started POST "/classrooms" for 127.0.0.1 at 2013-01-04 18:17:22 -0800 
Processing by ClassroomsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"Z+rsjO1rY2+P7VdsYd/LwiQr3DZX6r1/Dxh7JGbIOFA=", "name"=>"feed", "commit"=>"Done"} 
Completed 406 Not Acceptable in 2ms 

我在瀏覽器中得到一個沒有代碼的空白頁面(檢查源代碼)。

+0

你可以包含請求的完整日誌嗎? – ewiinnnnn

+0

好的,已更新。感謝您的期待! – perseverance

回答

3

嗯,它說「406不可接受」,你從窗體發出HTML請求,但你的控制器只響應JS請求。

嘗試增加:遠程=>真到了形式

= form_tag classrooms_path, :html => {:multipart => true}, :remote => true, do |f| 

如果不工作,你可能還沒有包括這些:

= javascript_include_tag :defaults 
= csrf_meta_tag 
在HTML頭(HTTP

: //www.stackoverflow.com/questions/4227775/rails-form-for-remote-true-is-not-calling-js-method)

+0

406不可接受代表什麼?它非常模糊,並沒有幫助診斷問題.. – perseverance

+0

多數民衆贊成HTML錯誤代碼,這將幫助你,http://www.checkupdown.com/status/E406.html。基本上只使用format.js,你說你只接受JS請求,但是從表單創建的請求默認是HTML(除非你使用:remote => true)。 – ewiinnnnn

+0

你搖滾。謝謝您的幫助! – perseverance

相關問題