UsersController中的NoMethodError #new(未定义方法`userprofiles&#39; for#<user:0x000000059c50e0>)</user:0x000000059c50e0>

时间:2014-12-16 13:49:57

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

我不知道为什么我会出现这种错误..我已经在之前的项目(简单的练习项目)中创建了一些嵌套资源但是我不知道为什么不起作用..

错误:

NoMethodError in UsersController#new (undefined method `userprofiles' for #<User:0x000000059c50e0>)

模型

  • user.rbbelongs_to :userprofile
  • user_profile.rbbelongs_to :user

routes.rb

resources :users do
    resources :user_profiles
end

users_controller.rb

class UsersController < ApplicationController
    before_action :authenticate_user!
    before_action :set_userprofile, only: :new

    def index
        if current_user
            @user = User.find_by_email(current_user.email)
            redirect_to :action => "new"
        end
    end

    def new
        @user = User.find(current_user.id)
        @user_profile = @user.userprofiles.new

    end

    private

    def set_userprofile
        @user = User.find(current_user.id)
    end

end

1 个答案:

答案 0 :(得分:1)

用户模型

 class User < ActiveRecord::Base
    has_many :user_profiles
 end

用户个人资料模型

class UserProfile < ActiveRecord::Base
   belongs_to :user
end

在控制器中

def new
  ...
  @user_profile = @user.user_profiles.new
end

它应该是这样的