そのため、jQuery ajaxリクエストがサーバーにヒットしているが、ページが更新されないというシナリオがあります。私は困惑しています...
ajaxリクエストは次のとおりです。
$.ajax({
type: 'GET',
url: '/jsrender',
data: "id=" + $.fragment().nav.replace("_link", "")
});
Railsのログを見ると、次のようになります。
Processing ProductsController#jsrender (for 127.0.0.1 at 2010-03-17 23:07:35) [GET]
Parameters: {"action"=>"jsrender", "id"=>"products", "controller"=>"products"}
...
Rendering products/jsrender.rjs
Completed in 651ms (View: 608, DB: 17) | 200 OK [http://localhost/jsrender?id=products]
したがって、ajaxリクエストがサーバーに到達していることは明らかです。jsrenderメソッドのコードは実行されていますが、jsrender.rjsのコードは起動しません。メソッドjsrenderは次のとおりです。
def jsrender
@currentview = "shared/#{params[:id]}"
respond_to do |format|
format.js {render :template => 'products/jsrender.rjs'}
end
end
議論のために、jsrender.rjsのコードは次のとおりです。
page<<"alert('this works!');"
どうしてこれなの?paramsでauthenticity_tokenがないことがわかりますが、authenticity_tokenも渡してみましたが、同じ結果になりました。
前もって感謝します。