【发布时间】:2012-08-29 05:08:10
【问题描述】:
我正在关注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
任何线索为什么会出现这种行为?
而且,如果我从delete 链接中删除:remote => true,则用户仍处于登录状态。我在destroy 方法中有session 的日志语句在任何一种情况下都不会被调用,但如果':remote=>true 然后会话以某种方式搞砸了。在检查 cookie 时,我发现 cookie 没有被破坏,但是当调用 posts 上的 destroy 方法时它确实被修改了。不知道为什么会发生这种情况。
【问题讨论】:
标签: ruby-on-rails ruby ajax authentication railscasts