在自定义控制器中设计resource和resource_name帮助程序

时间:2014-12-11 16:46:14

标签: ruby-on-rails devise helpers

我使用路由扩展了默认的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,因为资源是nil。与资源名称相同。 不知何故,资源和resource_name帮助程序在默认的设计/注册/新方法中可用,但我无法弄清楚如何。因此无法找到让这些帮助程序可用于我的自定义方法的方法。 非常感谢任何帮助!

1 个答案:

答案 0 :(得分:4)

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

  def resource_name
    :user
  end

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