Come up with a rendering sign => up / in the form of a partial code elsewhere in the code

I am just starting out with Devise and Rails3. I have authentication, work, and basic understanding.

At the moment, in my home controller, which represents my homepage / main page, I have two links that link to Register => sign_up, and to another, which changes depending on login / logout => sign_in / sign_out .

However, I do not want to redirect my user to the login page. Instead, I want to display my login form on my first page. Therefore, I divided the devise/session/newint template into a view and a particle of _form.html.erb.

And now in my home view, I present the login form as follows:

<% if user_signed_in? %>
    Welcome: <b><%= current_user.username %> (<%= current_user.group.name %>)</b>
    <%= link_to "Logout", destroy_user_session_path, :method => 'delete' %>
<% else %>
    <%= render 'devise/sessions/form' %> // Rendering the partial here
    <%= link_to "Login", new_user_session_path %>
<% end %>
<hr>

This is the partial code:

<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
  <div><%= f.label :email %><br />
  <%= f.email_field :email, :autofocus => true %></div>

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

  <% if devise_mapping.rememberable? -%>
    <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
  <% end -%>

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

My error is as follows:

NameError in Home#index

Showing devise/sessions/_form.html.erb where line #1 raised:

undefined local variable or method `resource' for #<#<Class:0x614ec68>:0x6157ff8>
Extracted source (around line #1):

1: <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
2:   <div><%= f.label :email %><br />
3:   <%= f.email_field :email, :autofocus => true %></div>
4: 

, . , . dump(resource), /. , :

<% if @user %>
   <% resource = @user %>
<% end %>

:

def index
   @user = User.new
end

resource_name, be :user, , - devise_mapping.rememberable?, , .

, , .

+5
2

:

, , , Devise, -Devise.

home_helper.rb :

def resource_name
:user
end

def resource
@resource ||= User.new
end

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

Devise 3.5.1, resource_class, .

application_helper.rb, .

def resource_name
  :user
end

def resource
  @resource ||= User.new
end

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

def resource_class
  devise_mapping.to
end
+4

All Articles