Я получаю эту ошибку в своих тестах из раздела 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
Я не знаю, что с этим делать. Почему я получаю ошибку неправильного количества аргументов?
Я вернулся к коду, но я не уверен, куда идти. Я чувствую, что перепроверил весь код из книги... но я все еще получаю эту ошибку. Спасибо за еще одну пару глаз. Помогите с этой проблемой спасибо.