我在測試中遇到錯誤ActionController::UrlGenerationError: No route matches {:action=>"show", :controller=>"profiles"} missing required keys: [:user_id]
註冊。用戶在註冊後被重定向到用戶的個人資料,但我的測試失敗。下面是我的一些代碼行..ActionController :: UrlGenerationErr或:無路由匹配{:action =>「show」,:controller =>「profiles」}}缺少必需的鍵:[:user_id]
創建操作會話中控制器
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
log_in user
params[:session][:remember_me] == '1' ? remember(user) : forget(user)
redirect_back_or user_profile_path(user, @profile)
else
flash.now[:danger] = 'Invalid email/password combination'
render 'new'
end
創建操作用戶控制器
def create
@user = User.new(user_params)
if @user.save
log_in @user
flash[:success] = "Welcome to the Mini Olympics"
redirect_to user_profile_path(current_user, @profile)
else
render 'new'
end
end
在註冊TEST(用有效的信息)
test "valid signup information" do
get signup_path
assert_difference 'User.count', 1 do
post_via_redirect user_profile_path, user: { email: "[email protected]",
password: "password",
password_confirmation: "password",
profile_atrributes: {user_id: @user.id, name: "Example Test", street: "24 Fred Rd", city: "Cutlin", state: "SW", zipcode: "35478"}}
end
assert_template 'profiles/show'
assert is_logged_in?
end
測試在post_via_redirect
行失敗,但實際的應用程序工作。
@user是工廠嗎? – trh
@trh,沒有它沒有。我也嘗試過'user.id'來達到同樣的效果。 –