设计:如果我有一个带有show方法的用户控制器,则无法登录

时间:2011-02-09 10:55:33

标签: ruby-on-rails devise

我在Rails 3项目上使用Devise,我正在尝试使用Cucumber和Rspec在BDD上完成所有这些。

问题是当我使用像这样的Cucumber Scenario登录时:

  Scenario: Login
    Given I am not authenticated
    And I am on the home page
    And I have a user with username "jsmith"
    When I follow "Log in"
    And I fill in "Username" with "jsmith"
    And I fill in "Password" with "password"
    And I press "Sign in"
    Then I should be on the home page
    And I should see "Logged in successfully."
    And I should see "Log out"

当我在routes.rb

中获得以下内容时遇到问题
  match 'home' => "home#index"

  devise_for :users,
  :path_names => { :sign_in => 'login', :sign_out => 'logout'}

  devise_scope :user do
    get '/login' => 'devise/sessions#create'
    get '/logout' => 'devise/sessions#destroy'
  end

  resources :users

问题是我没有看到“登录成功”。但是,如果我将routes.rb中的行更改为

resources :users, :except => [:show]

然后它工作正常,但我不能为用户提供show方法。

有没有办法绕过这一切?

1 个答案:

答案 0 :(得分:0)

问题是您没有看到“已成功登录”或您是否未登录?我认为设计重定向到您的用户,如果它没有找到它转到另一个页面...索引? - 你的节目页面中是否有通知标签和片段(应该在布局中)?

修改

你应该检查一下你的节目中是否有会话值,如果你没有看到字符串'已签名',那么你应该在节目中完成<%= session.to_yaml %>,我的猜测是它已被删除,可能是因为你被重定向了。