Почему Hartl Tutorial 9.2.3 не работает в методе redirect_back_or? Неверное количество аргументов Ошибка?

Я получаю эту ошибку в своих тестах из раздела 9.2.3 учебника Hartl.

1) Authentication signin with valid information 
 Failure/Error: click_button 'Sign in'
 ArgumentError:
   wrong number of arguments (0 for 1)
 # ./app/helpers/sessions_helper.rb:34:in `redirect_back_or'
 # ./app/controllers/sessions_controller.rb:11:in `create'
 # (eval):2:in `click_button'
 # ./spec/requests/authentication_pages_spec.rb:37:in `block (4 levels) in <top (required)>'

Это происходит из этого метода в контроллере сеансов:

приложение/контроллеры/sessions_controllers.rb

def create
  user = User.find_by_email(params[:session][:email])
  if user && user.authenticate(params[:session][:password])
  sign_in user
  redirect_back_or user
  else
  flash.now[:error] = "Invalid email/password combination"
  render 'new'
end 

Метод redirect_back_or исходит от помощника сеанса: app/helpers/sessions_helper.rb

def redirect_back_or(default)
  redirect_to(session[:return_to] || default)
  session.delete.(:return_to)
end 

До этого метод создания контроллера сеанса...

redirect_to user

Изменение его на redirect_back_or не проходит почти все мои тесты. При использовании redirect_to пользователь проходит большинство тестов.

Вот соответствующие тесты: spec/requests/authentication_pages_spec.rb

describe "Authorization" do

describe "for non signed in users" do                    
  let(:user) {FactoryGirl.create(:user) }                

  describe "when attempting to visit a protected page" do
    before do
      visit edit_user_path(user)                         
      fill_in "Email", with: user.email                  
      fill_in "Password", with: user.password            
      click_button "Sign in"                             
    end                                                  
    describe "after signing in" do                       
      it "should render the desired protected page" do   
        page.should have_selector('title', text: "Edit user")
      end
    end
  end
end

Я не знаю, что с этим делать. Почему я получаю ошибку неправильного количества аргументов?

Я вернулся к коду, но я не уверен, куда идти. Я чувствую, что перепроверил весь код из книги... но я все еще получаю эту ошибку. Спасибо за еще одну пару глаз. Помогите с этой проблемой спасибо.


person ruby n max    schedule 12.12.2013    source источник


Ответы (1)


У вас есть лишняя точка в этой строке:

session.delete.(:return_to)

Измените его на:

session.delete(:return_to)
person mechanicalfish    schedule 13.12.2013
comment
Бламмо. Прохождение испытаний. Приложение работает. Спасибо добрый человек! Отмечено как ответ. Я просмотрел этот код, кажется, 100 раз. Йииш! - person ruby n max; 13.12.2013