用户:类的未定义方法`model_name'

时间:2014-05-16 12:46:04

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

以下是我的form

<%= form_for @user, {class: "form-horizontal", id: "signupform"} do |f| %>    
<% end %>

以下是我的PersonController

class PersonController < ApplicationController
  def new
      @user = User.new
  end    
end

当我尝试导航到http://localhost:3000/person/new时,我会在下面收到以下错误。

undefined method `model_name' for User:Class

用户模型

class User << CustomService 
  verbose true

  get :all, '/users/'
  post :login, '/signin'

end

3 个答案:

答案 0 :(得分:2)

我认为您不想指定@user,而只需使用符号(:user)。请试一试。

您的代码应该是这样的,

<%= form_for :user, url: users_path, method: :post, {class: "form-horizontal", id: "signupform"} do |f| %>    
<% end %>

注意:users_path =&gt;你的帖子。

答案 1 :(得分:1)

可能你的User类不是从ActiveRecord :: Base继承的,如下所示:

class User < ActiveRecord::Base
 #your attributes and methods
end

尝试从此基类继承User。

希望它有所帮助。

答案 2 :(得分:1)

User类不是代码中的ActiveRecord model。因此,当您创建User.new时,它只返回裸ruby类(不适用于Rails)

检查Rudy Sidinger的答案,了解如何正确执行此操作


此外,您可能希望查看班级的这一部分:

  get :all, '/users/'
  post :login, '/signin'

为什么要在模型中定义路线?我只在config/routes.rb文件中定义路由,如下所示:

#config/routes.rb
resources :users, only: :index, path_names: { index: "all" } do #-> routes to /all for users idnex
    collection do
        post "signin", action: :login 
    end
end