我有两个模型用户和促销,用户可以创建 has_many 促销和促销属于用户:
促销.rb
class Promotion < ActiveRecord::Base
belongs_to :user
belongs_to :good
validates :name, :presence => true
validates :title, :presence => true
validates :description, :presence => true
end
对于我使用的用户这样设计:
用户.rb
class User < ActiveRecord::Base
has_many :promotions ,:foreign_key => "user_id",
:dependent => :destroy
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:omniauthable, :omniauth_providers => [:facebook]
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me,:provider,:uid,:address,:name,:surname,:supplier,:partita_iva,:state,
:gender ,:language,:bio,:work,:education
现在当我想创建一个新的促销活动时得到这个错误
PromotionsController 中的 NoMethodError#create undefined method `promotions' for nil:NilClass
这是控制器:
def create
@user = User.find_by_id(params[:user_id])
@promotion =@user.promotions.create(:params[:promotion])
redirect_to promotion_patch(@promotion)
respond_to do |format|
if @promotion.save
format.html { redirect_to @promotion, notice: 'Promotion was successfully created.' }
format.json { render json: @promotion, status: :created, location: @promotion }
else
format.html { render action: "new" }
format.json { render json: @promotion.errors, status: :unprocessable_entity }
end
end
end
请帮忙 :)