制定任何页面上登记表(Devise Registration form on any page)

2019-08-03 12:16发布

我试图让用户注册了我的家/目标网页上的网站。 我复制了色器件登记表到我的登陆页面视图 -

<%= 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" %>

而且我还添加了辅助方法在我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'为#<#:0x007fa816b4b750>`

缺少什么我在这里正确地呈现我家的目标网页上登记吗?

Answer 1:

需要声明的控制器方法作为辅助方法从视图访问它们:

helper_method :resource, :resource_name, :devise_mapping

只需添加该行的内部ApplicationController定义的方法之后。

你会发现,你所提供的链接实际上提到把这个代码的应用助手 ,而不是控制器...你能避免这helper_method ,如果你这样做的声明。



文章来源: Devise Registration form on any page