Devise form within a different controller Devise form within a different controller ruby-on-rails ruby-on-rails

Devise form within a different controller


As Andres says, the form calls helpers which are specified by Devise and so aren't present when you access a Devise form from a non-Devise controller.

To get around this, you need to add the following methods to the helper class of the controller you wish to display the form under. Alternatively, you can just add them to your application helper to make them available anywhere.

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

Source: http://pupeno.com/blog/show-a-devise-log-in-form-in-another-page/


Can try this also...check this question.

Source

<%= form_for("user", :url => user_session_path) do |f| %>  <%= f.text_field :email %>  <%= f.password_field :password %>  <%= f.check_box :remember_me %>  <%= f.label :remember_me %>  <%= f.submit 'Sign in' %>  <%= link_to "Forgot your password?", new_password_path('user') %><% end %> 


The form you created works when rendered from a Devise controller because "resource" is defined through Devise. Take a look at the implementation of the Devise SessionsController - from what I understand, you're attempting to replicate the "new" action. The method "build_resource" is probably what you're looking after.

The Warden gem is where the "resource" objects are coming from. If you wish to dig deeper, that'd be the place to look.