【问题标题】:Devise delete link for an object causes user to sign out为对象设计删除链接导致用户退出
【发布时间】:2011-08-30 16:40:36
【问题描述】:

我在使用 Devise 时遇到了一个奇怪的问题。我有任务清单。当您突然删除一项任务时,我收到与用户有关的模板错误。

似乎删除方法会导致会话注销,因此在尝试加载模板时找不到用户。

我不知道为什么会这样:

_task.html

<div class="tasks">
<%= div_for task do %>

<%= link_to 'Delete', task_path(task), :method => :delete, :class => "delete", :remote  => true %> | <%= content_tag(:div, task.task, :class => "task-body") %> 


<% end %>
</div>

destroy.js.erb

$("#task_<%= @task.id %>").fadeOut();

重新加载页面后出现错误,这是帐户,在标题中注销等

No route matches {:action=>"show", :controller=>"users"}

Extracted source (around line #5):

2: <div id ="login">
3: <ul>
4:  <li><%= link_to "Sign out", destroy_user_session_path %></li>
5:    <li><%= link_to "Account", user_path(current_user) %></li>
6:  <li><%= link_to "Things", user_things_path(current_user) %></li>
7:  
8: </ul>

提前致谢!

【问题讨论】:

  • 你能把路由和控制器的相关代码贴出来吗?
  • 您使用的是哪个版本的 rails 和 devise?
  • 我也看到了这个问题。当为用户对象的嵌套资源调用销毁方法时,用户将被注销。我有最新版本的 devise 和 Rails。

标签: ruby-on-rails-3 devise


【解决方案1】:

经过一番搜索,我在 stackoverflow 上找到了答案,所以应该归功于 this previous question 的 justsee

请求将不包含所需的 CSRF 数据,并且自 Rails 3.0.4 会话被静默重置而不是抛出 ActionController::InvalidAuthenticityToken 错误。 要解决此问题,请在您的布局中添加以下内容:

<%= javascript_include_tag :defaults %> 
<%= csrf_meta_tag %>

【讨论】:

    猜你喜欢
    • 2014-06-05
    • 2020-04-22
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    相关资源
    最近更新 更多