如何禁用设计消息 - "You are already signed in." - 重定向回用户索引时?

How do I disable Devises message - "You are already signed in." - when redirecting back the users index?

我的网页上有一个按钮,可以使用参数将我从用户索引重定向回用户索引。我的问题是,当我通过一个按钮导航回 users_path 时,我收到一条消息表单 devise 说 "You are already signed in." 即使我没有尝试登录并且只是导航回同一页面,也会发生这种情况但删除参数。

有问题的按钮看起来像,

<%= button_to "All Users", users_path, class: "button expand" %> 

我在我的所有文件中搜索了 "You are already signed in." 的实例,唯一的参考是 devise.en.yml 中的 already_authenticated: "You are already signed in."

DeviseController 正在从方法 require_no_authentication 生成此消息。此方法用作 before_filter 页面上的登录页面或其他对登录用户无用的类似操作。它重定向到资源的 after_sign_in_path 并设置 flash 消息。您必须覆盖 require_no_authentication 方法或生成一个不使用 before_filter.

的新控制器

发生这种情况是因为我使用的是 button_to 而不是 link_to。 button_to 附加一个 POST 请求,而 link_to 附加一个 GET 请求。随附的 post 请求 rails 正在寻找控制器中与预期不同的操作。

如果在索引或显示页面上创建刷新方法,请始终使用 link_to 帮助器或附加 GET 请求的帮助器。

您还可以在 config/locales/devise 中编辑消息。en.yml:

failure:
  already_authenticated: ''

然后在您的视图中显示即显消息的任何位置:

- if flash[:alert].present?
  ...