gpt4 book ai didi

ruby-on-rails - 什么是 devise_mapping 变量,如何包含它?

转载 作者:行者123 更新时间:2023-12-03 13:41:44 24 4
gpt4 key购买 nike

我正在尝试在我的 Rails 应用程序(Rails 2.3.8、Devise 1.0.7、在 Windows Vista 上运行的 mongrel)中使用 Devise 实现身份验证。但我收到以下错误:

undefined local variable or method `devise_mapping' for #<ActionView::Base:0x6d63890>

这是我使用自动生成的部分 _devise_links.html 的时候。
<%- if controller_name != 'sessions' %>
<%= link_to t('devise.sessions.link'), new_session_path(resource_name) %><br />
<% end -%>

<%- if devise_mapping.registerable? && controller_name != 'registrations' %>
<%= link_to t('devise.registrations.link'), new_registration_path(resource_name) %><br />
<% end -%>

<%- if devise_mapping.recoverable? && controller_name != 'passwords' %>
<%= link_to t('devise.passwords.link'), new_password_path(resource_name) %><br />
<% end -%>

<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
<%= link_to t('devise.confirmations.link'), new_confirmation_path(resource_name) %><br />
<% end -%>

<%- if devise_mapping.lockable? && controller_name != 'unlocks' %>
<%= link_to t('devise.unlocks.link'), new_unlock_path(resource_name) %><br />
<% end -%>

有想法该怎么解决这个吗?我假设 devise_mapping 变量没有包含在我的 View 中,但我该怎么做呢?

最佳答案

您可以将辅助方法添加到 ApplicationHelper .确保使用正确的型号名称(在我的例子中它是 :user 代表 User 型号)。

def devise_mapping
Devise.mappings[:user]
end

def resource_name
devise_mapping.name
end

def resource_class
devise_mapping.to
end

2014 年 1 月 28 日更新

Devise的master分支显示 devise_mapping现在存储在请求中:
# Attempt to find the mapped route for devise based on request path
def devise_mapping
@devise_mapping ||= request.env["devise.mapping"]
end

resource_name别名为 scope_name以及。见 devise_controller.rb了解更多信息。

关于ruby-on-rails - 什么是 devise_mapping 变量,如何包含它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4541075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com