使用设计时未定义的方法session_path

时间:2014-10-27 12:32:02

标签: ruby ruby-on-rails-3 devise

在使用我的自定义控制器和视图设计时,我得到undefined method 'session_path' for #<#<Class:0x9859218>:0x8ebcbd0>,是否有人可以解释我做错了什么?

路线:

devise_for :users, :skip => [:sessions]
  as :user do
  get 'account/login' => 'account#login', :as => :new_user_session
  post 'account/login' => 'account#login_user', :as => :user_session
  delete 'account/logout' => 'account#logout', :as => :destroy_user_session
end

控制器:

AccountController < Devise::SessionsController
  def login
  self.resource = resource_class.new(sign_in_params)
  clean_up_passwords(resource)
  respond_with(resource, serialize_options(resource))
end

def login_user
  self.resource = warden.authenticate!(auth_options)
  set_flash_message(:notice, :signed_in) if is_flashing_format?
  sign_in(resource_name, resource)
  yield resource if block_given?
  respond_with resource, location: after_sign_in_path_for(resource)
end

def logout
  signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name))
  set_flash_message :notice, :signed_out if signed_out && is_flashing_format?
  yield if block_given?
  respond_to_on_destroy
end

视图:

<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
  <ul>
    <li>
      <%= f.label :login, "Email", :class => labels %>
      <%= f.email_field :login, :autofocus => true, :class => "wideinput" %>
    </li>
    <li>
      <%= f.label :password, :class => "labels" %>
      <%= f.password_field :password, :autocomplete => "off" %>
    </li>
    <li class='button'>
      <%= submit_tag "Login", :class => "btn1" %>
    </li>
  </ul>
<% end %>

1 个答案:

答案 0 :(得分:0)

尝试更改此行

post 'account/login' => 'account#login_user', :as => :user_session

post 'account/login' => 'account#login_user', :as => :session