当我想在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
谢谢!
答案 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