在任何页面上设计注册表单

2024-01-30

我试图允许用户在我的主页/登陆页面上注册该网站。 我已将设备注册表复制到我的登陆页面视图中 -

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

  <div><%= f.label :first_name %><br />
  <%= f.text_field :first_name %></div>

  <div><%= f.label :last_name %><br />
  <%= f.text_field :last_name %></div>

  <div><%= f.label :profile_name %><br />
  <%= f.text_field :profile_name %></div>

  <div><%= f.label :email %><br />
  <%= f.email_field :email %></div>

  <div><%= f.label :password %><br />
  <%= f.password_field :password %></div>

  <div><%= f.label :password_confirmation %><br />
  <%= f.password_field :password_confirmation %></div>

  <div><%= f.submit "Sign up" %></div>
<% end %>

<%= render "devise/shared/links" %>

而且我也曾添加了辅助方法 https://github.com/plataformatec/devise/wiki/How-To%3a-Display-a-custom-sign_in-form-anywhere-in-your-app in my application_controller.rb这样我就可以正确定义资源-

class ApplicationController < ActionController::Base
  protect_from_forgery
  def resource_name
    :user
  end

  def resource
    @resource ||= User.new
  end

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

但是我仍然收到错误undefined local variable or method resource'对于 #`

为了在我的主页上正确呈现注册表格,我缺少什么?


您需要将这些控制器方法声明为辅助方法才能从视图访问它们:

helper_method :resource, :resource_name, :devise_mapping

只需将该行添加到您的ApplicationController定义方法后。

您会注意到您提供的链接实际上提到将此代码放入应用程序中helper,而不是控制器...您可以避免这种情况helper_method声明,如果你这样做的话。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在任何页面上设计注册表单 的相关文章

随机推荐