アクションからjsonを取得しようとしていますが、問題があります。ajaxリクエストを作成して、railsで成功を返すアクション
"format.js"を返して ".js.erb"ファイルを返すことができますが...私はいくつかのものを返すアクションがあり、2つの異なる方法でそれを処理したいとします。私はそれを返すとき両方の方法が実行されるので、同じ.js.erbで2つの異なる方法を持つことはできません。つまり、そのファイルを返すと、そのファイルは完全に処理されます。
私はjQueryの方法を使用しようとしました。
私が持っている:
# GET /posts/slug/hidden_content.json
def hidden_content
@post = Post.find(params[:id])
@post = hidden_post_part(@post.body)
respond_to do |format|
format.json { render json: @post, :status => :ok}
end
end
そしてcontroller.coffee中:
$ ->
# Render hidden part of post
$(".showallpost img").click(->
post_url = $(this).next().attr("href").split("/").pop();
$.ajax
url: Routes.hidden_content_path(post_url),
type: "GET",
contentType: "application/json",
success: (data) ->
console.log "foo"
);
GETは完璧に動作し、それは私が必要なものを返しますが、成功関数が呼び出されることはありません、私はしないでください「foo」ログを参照してください。
私はアクションが呼び出し元にGETが成功したことを伝える何かを返すべきだと思います。 (私は試してみました:運がない状態)。
私は自分のGETデータを扱うことができません。
アイデア?あなたのjs.erbで
何がデータ型にしようとするときについて:「JSON」とcontentTypeオプションを削除しますか?または同じURLに対してリクエストを行いますが、.jsonを追加します。問題は、jQueryがレスポンス形式が期待どおりでないため、これを失敗したリクエストと分類することです。 –
ルートとは何ですか? –
@TanelSuurhans私はdataTypeを試してみましたが、URLに.jsonを付けても、成功はトリガされません。そしてRyan https://github.com/railsware/js-routesレールルートを手助けする便利なjsスクリプト。 –