簡単な認証のためにhttp://railscasts.com/episodes/250-authentication-from-scratchをフォローしています。期待どおりに動作します。私は自分のアプリに次のモデルを持っていますpartial:
<%= content_tag_for(:li, post) do %>
<%= link_to 'Delete', post, :confirm => 'Are you sure?', :method => :delete, :remote => true %>
<% end %>
内部では次のように呼び出さindex.html.erbれます。
<%= render :partial => @posts.reverse %>
は次のdestroy.js.erbとおりで、オブジェクトが正常に破棄された場合に呼び出されます。
$('#<%= dom_id(@post) %>').css('background', 'red');
$('#<%= dom_id(@post) %>').hide();
deleteボタンをクリックすると、postオブジェクトが適切に削除され、オブジェクトdestroy.js.erbも正しくレンダリングされます。しかし、どういうわけか、ユーザーはログアウトされます。以下は私のコードですposts_controller.rb:
def destroy
logger.error 'in destroy'
@post = Job.find(params[:id])
@post.destroy
respond_to do |format|
format.html { redirect_to(posts_url) }
format.xml { head :ok }
format.js
end
end
この動作の理由の手がかりはありますか?
:remote => trueそして、リンクからを削除するとdelete、ユーザーはログインしたままになります。どちらの場合も呼び出されないdestroyメソッドのログ ステートメントがありますが、' の場合、セッションは何らかの形で台無しになります。Cookie を確認したところ、Cookie は破棄されていませんが、メソッド onが呼び出されると変更されることがわかりました。なぜこれが起こらなければならないのか分かりません。session:remote=>truedestroyposts