次のコードを使用して、Rails 3 で AJAX アクションをセットアップしようとしています。コードの AJAX 部分は機能しているように見えますが、正しいファイルを要求せず、respond_to は通常の HTML を提供します。
ルーティング情報:
resources :zones do
resources :records
end
コントローラ:
def new
@zone = Zone.new
respond_to do |format|
format.html
format.js
end
end
ビュー内のリンク (haml):
= link_to 'Add a zone →', new_zone_path, :remote=>true
link_to から生成された HTML (また、html エンティティのレンダリングが失敗していることに注意してください...しかし、それは別の問題です):
<a href="/zones/new" data-remote="true">Add a zone &#8594;</a>
キックについては、ビュー/ゾーンのディレクトリリスト。私はこれを正しく行っているかどうか確信が持てないので、new.js.rjs と new.rjs の両方を持っています。どちらも同じ内容ですが、アクションによって取り上げられることはありません。
| `~zones/
| |-_form.html.haml
| |-_record.html.haml
| |-edit.html.haml
| |-index.html.haml
| |-new.html.haml
| |-new.js.rjs
| |-new.rjs
| `-show.html.haml
最後に、リンクをクリックしたときのサーバー ログ:
Started GET "/zones/new" for 127.0.0.1 at Wed Dec 29 00:04:03 -0700 2010
Processing by ZonesController#new as */*
User Load (0.4ms) SELECT "users".* FROM "users" WHERE ("users"."id" = 1) LIMIT 1
Rendered zones/_form.html.haml (22.1ms)
Rendered zones/new.html.haml within layouts/application (34.9ms)
Completed 200 OK in 80ms (Views: 42.0ms | ActiveRecord: 0.4ms)
ご覧のとおり、リクエストの .html ファイルをレンダリングしています。ここで、テストのために、ページhttp://localhost:3000/zones/new.jsに直接アクセスします。そして、new.js.rjs を提供します。また、javascript リモート呼び出しが機能しています。Firebug はリクエストとレスポンスを表示しますが、間違ったページをリクエストしています。
また、テストのためにこれを行いました:
= link_to "Add a zone", '/zones/new.js', :remote=>true
これは、javascript に対しては正常に動作します (rjs がダウンロードされ、実行され、正しく動作します)。
それが価値があるために、私はjqueryを使用しています。
ルーティングまたはリンク構文で何かが欠けているように感じますが、オンラインおよびドキュメントで見つけることができるすべての例は、私が何をしているかを正確に示しているようです. キャッチは何ですか?
ありがとう。