0
我有一個模型,看起來像:NoMethodError顯示問題
class Product < ActiveRecord::Base
before_create :generate_token
def to_param
token
end
private
def generate_token
self.token = loop do
random_token = SecureRandom.urlsafe_base64(10, false)
break random_token unless Product.exists?(token: random_token)
end
end
end
我的控制器看起來像:
def set_product
@product = Product.find_by(token: params[:token])
end
當我創建一個新的產品,我得到的錯誤:
NoMethodError in ProductsController#show
undefined method `name' for nil:NilClass
和我在我的控制器中的顯示看起來像:
def show
@title = @product.name
end
我創建的樣子:
def create
@product = Product.new(product_params)
#@product.user_id = current_user.id
respond_to do |format|
if @product.save
format.html { redirect_to @product, notice: 'Product was successfully created.' }
format.json { render action: 'show', status: :created, location: @product }
else
format.html { render action: 'new' }
format.json { render json: @product.errors, status: :unprocessable_entity }
end
end
end
而且,在我的控制器我有一個回調,看起來像:
before_action :set_product, only: [:show, :edit, :update, :destroy]
但是在軌控制檯插入,它顯示了正在插入的名稱。名稱列正在設置。
發佈您的「創建」動作 –
錯誤來自您的「show」動作。 '@ product'是'nil'。但首先發布你的控制器 –