Ruby on rails 在自定义控制器中设计资源和资源名称帮助器
我使用路由扩展了默认的Desive RegistrationController:Ruby on rails 在自定义控制器中设计资源和资源名称帮助器,ruby-on-rails,devise,helpers,Ruby On Rails,Devise,Helpers,我使用路由扩展了默认的Desive RegistrationController: # use my own controller for devise registrations devise_for :users, :controllers => { registrations: 'registrations' } 在这个控制器中,我有一个名为new\u from\u invitation的方法。此方法呈现一个自定义注册表单,以便在用户来自邀请时显示 我复制了designe/regi
# use my own controller for devise registrations
devise_for :users, :controllers => { registrations: 'registrations' }
在这个控制器中,我有一个名为new\u from\u invitation的方法。此方法呈现一个自定义注册表单,以便在用户来自邀请时显示
我复制了designe/registrations/new.html.erb文件。因此,我的自定义注册表单如下所示:
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
resource_name,:url=>registration_path(resource_name))do | f |%>
这会引发ArgumentError,因为资源为零。与资源名称相同。
不知何故,资源和资源名称助手在默认的designe/registrations/new方法中可用,但我不知道如何使用。因此,无法找到一种方法使这些助手可用于我的自定义方法。
任何帮助都将不胜感激 将其添加到应用程序帮助文件:
def resource_name
:user
end
def resource
@user ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
嘿,谢谢你的回复。实际上,我已经在ApplicationHelper中找到了这些行。它似乎不起作用..我只是通过在RegistrationController的顶部添加:helper ApplicationHelper::ApplicationHelper使它起作用。但这感觉不对。控制器不应该自动看到助手的方法吗?我得到的错误是表单中的第一个参数不能包含nil或be emptyHelper方法在控制器中不直接可用,您必须包含它们,但应用程序助手方法在视图中可用。实际上我想在视图中使用它们,不在控制器中。所以它们应该是可用的,不是吗?