没有路由匹配{:action =>“show”,:controller =>“user_profiles”,:id => nil,:user_id =>“2”}缺少必需的密钥:[:id]

时间:2014-12-17 05:44:32

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

当我想在user_profile创建后重定向到show action时,我的路由出错了。

控制器

class UserProfilesController < ApplicationController

    def create
        @user = User.find(current_user.id) 
        @profile = UserProfile.find_by_user_id(@user)

        if @user_profile = @user.create_user_profile(user_params)
            redirect_to user_user_profile_url(@user,@profile)
        end
    end

    def show
        @user_profile = @user.user_profile
    end

    private

    def user_params
        params.require(:user_profile).permit(:firstname, :lastname, :birthdate, :street_address, :city_address, :country, :contact_number, :avatar)
    end
end

的routes.rb

 resources :users do
    resources :user_profiles
  end

谢谢!

1 个答案:

答案 0 :(得分:2)

@profile实例变量很可能是nil,因为您要创建新的配置文件,而不是更新现有的配置文件。请尝试重定向到新创建的配置文件。

def create
    @user = User.find(current_user.id) 
    @profile = UserProfile.find_by_user_id(@user)

    if @user_profile = @user.create_user_profile(user_params)
        redirect_to user_user_profile_url(@user,@user_profile)
    end
end
相关问题