ActionController :: UrlGenerationErr或:没有路由匹配{:action =>“show”,:controller =>“profiles”}缺少必需的键:[:user_id]

时间:2015-08-30 14:15:44

标签: ruby-on-rails ruby-on-rails-4 minitest

我在用户注册的测试中收到错误ActionController::UrlGenerationError: No route matches {:action=>"show", :controller=>"profiles"} missing required keys: [: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 "valid signup information" do
  get signup_path
  assert_difference 'User.count', 1 do
  post_via_redirect user_profile_path, user: { email: "user@example.com",
                     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行失败,但实际应用程序正常运行。

1 个答案:

答案 0 :(得分:1)

在测试中,using (var namedPipeServerStream = new NamedPipeServerStream(_pipeName, PipeDirection.InOut, 1, PipeTransmissionMode.Message, PipeOptions.Asynchronous)) { namedPipeServerStream.WaitForConnection(); MemoryStream ms = new MemoryStream(); byte[] buffer = new byte[0x1000]; do { ms.Write(buffer, 0, namedPipeServerStream.Read(buffer, 0, buffer.Length)); } while (!namedPipeServerStream.IsMessageComplete); string stringData = Encoding.UTF8.GetString(ms.ToArray()); _callback(stringData); } Thread.Sleep(1); 缺少其参数。它应该是

user_profile_path
相关问题