我在rails和ajax中有一个基本的CRUD,但我需要集成Devise gem,在为我的项目添加devise gem并测试CRUD时,我收到此错误:
rails 4.2中的控制器代码:
class ProductsController < ApplicationController
before_action :authenticate_user!
before_action :product_find, only: [:show, :update, :destroy, :edit]
def index
@products = Product.all.order('created_at DESC')
end
def show
end
def new
@product = Product.new
respond_to do |format|
format.html { render layout: false }
format.json { render json: @product }
format.js
end
end
def create
@product = current_user.products.build(product_params)
respond_to do |format|
if @product.save
format.json { render :show, status: :created, location: @product}
format.js
else
format.html { render :new }
format.json { render json: @product.errors, status: :unprocessable_entity }
format.js
end
end
end
def edit
end
def update
@product = Product.update(params[:id], product_params)
end
def destroy
@product.destroy
end
private
def product_find
@product = Product.where(id: params[:id]).first
end
def product_params
params.require(:product).permit(:name, :quantity, :price)
end
end
用户可以毫无问题地连接,当我使用注册用户
创建新产品时会发生错误我做错了什么?
我认为错误可能出现在CREATE和NEW方法
中感谢!
答案 0 :(得分:1)
您是否为模型正确设置了关联?错误undefined method 'products' for <User>
表示您没有。
# user.rb
has_many :products
# product.rb
belongs_to :user
确保产品型号上还有user_id
字段。