【问题标题】:Devise resource and resource_name helpers in custom controller在自定义控制器中设计资源和资源名称助手
【发布时间】:2015-02-10 05:54:01
【问题描述】:

我使用路由扩展了默认的 Devise RegistrationsController:

# use my own controller for devise registrations
devise_for :users, :controllers => { registrations: 'registrations' }

在这个控制器中,我有一个名为 new_from_invitation 的方法。此方法呈现自定义注册表单以在用户来自邀请时显示。

我复制了文件 devise/registrations/new.html.erb。所以我的自定义注册表单如下所示:

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>

这会引发 ArgumentError,因为资源为零。与资源名称相同。 不知何故,资源和资源名称助手在默认的设计/注册/新方法中可用,但我不知道如何。因此无法找到一种方法让这些助手可用于我的自定义方法。 任何帮助将不胜感激!

【问题讨论】:

    标签: ruby-on-rails devise helpers


    【解决方案1】:

    将此添加到您的应用程序帮助文件中:

      def resource_name
        :user
      end
    
      def resource
        @user ||= User.new
      end
      def devise_mapping
        @devise_mapping ||= Devise.mappings[:user]
      end
    

    【讨论】:

    • 您好,谢谢您的回复。实际上,我已经在 ApplicationHelper 中找到了这些行。而且它似乎不起作用..
    • 我刚刚通过在 RegistrationsController 的顶部添加:helper ApplicationHelper::ApplicationHelper 使其工作。但这感觉不对。控制器不应该自动看到 Helper 的方法吗?
    • 我得到的错误是 表单中的第一个参数不能包含 nil 或为空
    • Helper 方法不能直接在控制器中使用,您必须包含它们,但应用程序的帮助方法可以在视图中使用。
    • 其实我想在视图中使用它们,而不是在控制器中。所以它们应该可用,不是吗?
    猜你喜欢
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 2012-06-30
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多