0

これが私の変更されていないコントローラーです:

  def create
    @user = User.new(params[:user])

    respond_to do |format|
      if @user.save
        format.html { redirect_to @user, notice: 'User was successfully created.' }
        format.json { render json: @user, status: :created, location: @user }
      else
        format.html { render action: "new" }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

そして、ここに私のルートがあります:

  root :to => "songs#index"
  match '/votes/:song_id/:user_id' => "votes#create"
  resources :votes

  resource :session

  resources :users

  resources :songs

  match '/login' => "sessions#new", :as => "login" 
  match '/logout' => "sessions#destroy", :as => "logout" 

そしてエラー:

undefined method `user' for #<User:0x00000102b42a00>


Application Trace | Framework Trace | Full Trace
app/controllers/users_controller.rb:46:in `block in create'
app/controllers/users_controller.rb:45:in `create'
Request

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"oOzmpsbEJtnHC4YGeAf4N6pVxfK+Zf4W9ec+0E/Eds0=",
 "user"=>{"email"=>"bhjjhb@hui.com",
 "password"=>"[FILTERED]"},
 "commit"=>"Create User"}

モデル:

class User < ActiveRecord::Base
  attr_accessible :email, :password
  validates_uniqueness_of :user
  validates_presence_of :password

  has_many :votes


end
4

2 に答える 2

2

http://guides.rubyonrails.org/active_record_validations_callbacks.html#uniqueness

このヘルパーは、属性の値が一意であることを検証します

あなたの問題は検証にあります。validates_uniqueness_ofモデル属性の一意性をvalidates_uniqueness_of :userチェックするため、ユーザーのuser属性が一意であることを確認しようとしています。その過程で、 を呼び出し@user.user、 を生成しNoMethodErrorます。

追加するために編集: @Amar が言うように、これを修正する方法は、ユーザー レコードごとに一意になるいくつかの属性または属性のセット (など:email) の一意性を検証することです。

于 2012-09-11T13:22:28.090 に答える
1

validates_uniqueness_of :userこの検証を使用する代わりに、validates_uniqueness_of :email 主に属性で機能します

于 2012-09-11T13:29:05.213 に答える