在Michael on Rails教程的第10章中,我得到了8个错误。在10.2.2测试之前,一切都很正常。我不知道怎么修好它..。希望你能帮上忙。提前谢谢。
错误信息:
E 错误: UsersSignupTest#test_invalid_signup_information: SyntaxError: /home/studi/workspace/sample_app/app/controllers/users_controller.rb:59:语法错误,意外的keyword_end,期望输入结束测试/集成/users_signup_test.rb:6: in
block in ' bin/rails test test/integration/users\_signup\_test.rb:5 E Error: UsersSignupTest#test\_valid\_signup\_information: SyntaxError: /home/studi/workspace/sample\_app/app/controllers/users\_controller.rb:59: syntax error, unexpected keyword\_end, expecting end-of-input test/integration/users\_signup\_test.rb:17:in块 bin/rails测试/集成/users_signup_test.rb:16 ...E 错误: UsersLoginTest#test_login_with_valid_information_followed_by_logout: SyntaxError: /home/studi/workspace/sample_app/app/controllers/users_controller.rb:59:语法错误,意外的keyword_end,期望输入结束测试/集成/users_login_test.rb:24: inblock in ' bin/rails test test/integration/users\_login\_test.rb:18 E Error: UsersEditTest#test\_successful\_edit: SyntaxError: /home/studi/workspace/sample\_app/app/controllers/users\_controller.rb:59: syntax error, unexpected keyword\_end, expecting end-of-input test/integration/users\_edit\_test.rb:22:in块 bin/rails测试/集成/users_edit_test.rb:20 E 错误: /home/studi/workspace/sample_app/app/controllers/users_controller.rb:59:语法错误: UsersEditTest#test_unsuccessful_edit: SyntaxError语法错误,意外的keyword_end,期望输入结束测试/集成/用户_编辑_test.rb:11:在block in ' bin/rails test test/integration/users\_edit\_test.rb:9 ......E Error: UsersControllerTest#test\_should\_redirect\_update\_when\_logged\_in\_as\_wrong\_user: SyntaxError: /home/studi/workspace/sample\_app/app/controllers/users\_controller.rb:59: syntax error, unexpected keyword\_end, expecting end-of-input test/controllers/users\_controller\_test.rb:23:in块中 bin/rails测试/控制器/用户_controller_test.rb:21 E 错误: /home/studi/workspace/sample_app/app/controllers/users_controller.rb:59:语法错误: UsersControllerTest#test_should_get_new: SyntaxError语法错误,未预料到的keyword_end,期望在‘ bin/rails测试/控制器/用户_controller_test.rb:14
user_controller_test文件:
require 'test_helper'
class UsersControllerTest < ActionDispatch::IntegrationTest
def setup
@user = users(:michael)
@other_user = users(:archer)
end
test "should get new" do
get signup_path
assert_response :success
end
test "should redirect edit when logged in as wrong user" do
log_in_as(@other_user)
get edit_user_path(@user)
assert flash.empty?
assert_redirected_to root_url
end
test "should redirect update when logged in as wrong user" do
log_in_as(@other_user)
patch user_path(@user), params: { user: { name: @user.name,
email: @user.email } }
assert flash.empty?
assert_redirected_to root_url
end
endusers_controller文件:
class UsersController < ApplicationController
before_action :logged_in_user, only: [:edit, :update]
before_action :correct_user, only: [:edit, :update]
def show
@user = User.find(params[:id])
end
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
log_in @user
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else
render 'new'
end
end
def edit
@user = User.find(params[:id])
end
def update
if @user.update_attributes(user_params)
flash[:success] = "Profile updated"
redirect_to @user
else
render 'edit'
end
end
private
def user_params
params.require(:user).permit(:name, :email, :password,
:password_confirmation)
end
# Before filters
# Confirms a logged-in user.
def logged_in_user
unless logged_in?
flash[:danger] = "Please log in."
redirect_to login_url
end
end
# Confirms the correct user.
def correct_user
@user = User.find(params[:id])
redirect_to(root_url) unless @user == current_user
end
end
end错误发生在10.2.2的指令之后。10.2.1的测试效果良好。
发布于 2017-12-19 11:17:26
看起来就在结束第58行之前,在end中有一个额外的users_controller。
编辑:@SebastianPalma说了什么-击败我:)
发布于 2017-12-19 11:27:43
在User#correct_user方法中有额外的端点。试试这个:
class UsersController < ApplicationController
before_action :logged_in_user, only: [:edit, :update]
before_action :correct_user, only: [:edit, :update]
def show
@user = User.find(params[:id])
end
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
log_in @user
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else
render 'new'
end
end
def edit
@user = User.find(params[:id])
end
def update
if @user.update_attributes(user_params)
flash[:success] = "Profile updated"
redirect_to @user
else
render 'edit'
end
end
private
def user_params
params.require(:user).permit(:name, :email, :password,
:password_confirmation)
end
# Before filters
# Confirms a logged-in user.
def logged_in_user
unless logged_in?
flash[:danger] = "Please log in."
redirect_to login_url
end
end
# Confirms the correct user.
def correct_user
@user = User.find(params[:id])
redirect_to(root_url) unless @user == current_user
end
end您必须注意if -修饰符的语法差异,如果-statment.you不必在modifier.these的末尾使用额外的端点,两者都是相同的,没有任何语法错误。
if c.empty?
return
end
return if c.empty?https://stackoverflow.com/questions/47885739
复制相似问题