1

タイプJSでしか返すことができないと明示的に述べているのに、コントローラーアクションがHTML形式でしか返されないのはなぜですか?

app / controllers / classrooms_controller.rb

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

app / views / classrooms / new.html.haml

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

app / views / classrooms / 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

ブラウザにコードのない(ソースをチェックした)空白のページが表示されます。

4

1 に答える 1

3

ああ、「406 Not Acceptable」と表示されています。フォームからHTMLリクエストを行っていますが、コントローラーはJSリクエストにのみ応答します。

フォームに:remote=>trueを追加してみてください

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

それが機能しない場合は、おそらくこれらを含めていません。

= javascript_include_tag :defaults
= csrf_meta_tag

HTMLヘッダー内(http://stackoverflow.com/questions/4227775/rails-form-for-remote-true-is-not-calling-js-method)

于 2013-01-05T02:23:46.177 に答える