Railsアプリケーションに取り組んでおり、event_calendargemの「来月」リンクをajax応答に変換しようとしています。
リンクをリモートに設定しました:
def month_link(month_date)
link_to I18n.localize(month_date, :format => "%B"),
{:month => month_date.month, :year => month_date.year},
remote: true
end
jsに応答するように言った...
respond_to do |format|
format.html
format.js { render text: "help me!" }
end
そしてそれは動作します!
Started GET "/calendar/2012/6" for 127.0.0.1 at 2012-07-03 15:27:42 -0500
Processing by CalendarController#index as JS
Parameters: {"year"=>"2012", "month"=>"6"}
Event Load (0.3ms) SELECT "events".* FROM "events" WHERE (('2012-05-27 05:00:00.000000' <= end_at) AND (start_at< '2012-07-01 05:00:00.000000')) ORDER BY start_at ASC
Rendered text template (0.0ms)
Completed 200 OK in 14ms (Views: 0.7ms | ActiveRecord: 0.3ms)
まあ...それが実際に何もレンダリングしない部分を除いて、私はそれを渡します。レンダリングなしで指示しただけformat.js
では、実際にはjsファイルに応答しません。
レンダリングが表示されない原因は何ですか?
更新
このようにURLにアクセスすると
localhost:3000/calendar/2012/6.js
、期待どおりに機能することに気づきました。リンクの設定に問題があると思いますか?わかりました。jsファイルを機能させましたが、理由がわかりません。私は誤用したと思います
render
(一度デバッグ目的で使用したことを誓ったかもしれませんが)。レンダリングは、htmlリクエストに応答するときに実際にhtmlページをレンダリングするだけだと思います。ajaxリクエストのためにjsonをjavascriptに渡すので意味があります。問題のもう1つの部分は、またはのいずれ
index.js.coffee.erb
かでCoffeeScriptを使用しようとしていたことindex.js.erb.coffee
です。一番長く機能していると思っていたのですが、実際に起こっていたのindex.js.erb
は、すでに削除していたのに、最初に書いたオリジナルを使っていたということです。サーバーを再起動すると、すべてが壊れました。