Ruby on rails 使用简单形式gemf.association为新操作提供NoMethodError
我正在创建一个允许人们发布广告的网站。在创建新广告时,我希望他们从my seeds.rb中的预填充列表中为该广告选择一个类别。因此,我建立了以下模型和关联 app/models/ad.rbRuby on rails 使用简单形式gemf.association为新操作提供NoMethodError,ruby-on-rails,ruby,ruby-on-rails-5,simple-form,simple-form-for,Ruby On Rails,Ruby,Ruby On Rails 5,Simple Form,Simple Form For,我正在创建一个允许人们发布广告的网站。在创建新广告时,我希望他们从my seeds.rb中的预填充列表中为该广告选择一个类别。因此,我建立了以下模型和关联 app/models/ad.rb class Ad < ApplicationRecord # validations belongs_to :category end 我继续得到以下错误:Adsnew中的NoMethodError:undefined方法'category_id' 你是说?类别 类别= 知道问题出在哪里吗?此
class Ad < ApplicationRecord
# validations
belongs_to :category
end
我继续得到以下错误:Adsnew中的NoMethodError:undefined方法'category_id'
你是说?类别
类别=
知道问题出在哪里吗?此外,以下是我的Ads控制器中的新建和创建操作:
class AdsController < ApplicationController
before_action :authenticate_user!, only: [:new, :create]
def new
@ad = Ad.new
end
def create
@ad = current_user.ads.create(ad_params)
if @ad.valid?
flash[:notice] = "Ad created successfully"
redirect_to ad_path(@ad)
else
render :new, status: :unprocessable_entity
end
end
# other actions
private
def ad_params
params.require(:ad).permit(:title, :cost, :description, :quantity, :phone, :email, :accepted)
end
end
如果您能帮助我们使用此表格,我们将不胜感激 可能您缺少Ads表中的类别id 尽管广告属于:category,但如果您尚未在广告表上设置category\u id列,则它将不起作用 如果需要添加此列,则应创建迁移
class AddCategoryToAds < ActiveRecord::Migration
def change
add_reference :ads, :category, index: true
end
end
最后,允许category_id作为参数:
def ad_params
params.require(:ad).permit(:title, :cost, :description, :quantity, :phone, :email, :accepted, :category_id)
end
可能您缺少Ads表中的类别id 尽管广告属于:category,但如果您尚未在广告表上设置category\u id列,则它将不起作用 如果需要添加此列,则应创建迁移
class AddCategoryToAds < ActiveRecord::Migration
def change
add_reference :ads, :category, index: true
end
end
最后,允许category_id作为参数:
def ad_params
params.require(:ad).permit(:title, :cost, :description, :quantity, :phone, :email, :accepted, :category_id)
end
我唯一想到的是忘记的category_id列,它从ads数据库表中丢失了-特别是因为它也从允许的ad_参数中丢失了。我唯一想到的是忘记的category_id列,ads数据库表中缺失-特别是因为它也从允许的ad_参数中缺失。显示ads和类别表的schema.rb定义显示ads和类别表的schema.rb定义您是对的!这就成功了。谢谢你帮助一个rails新手:嗯。奇怪的是,你接受了另一个答案,尽管我知道答案是正确的,但我的答案更完整,我以前也发过:@Pablo那是个意外-抱歉,现在更正了:你的答案被接受了。你是对的!这就成功了。谢谢你帮助一个rails新手:嗯。奇怪的是,你接受了另一个答案,尽管我知道答案是正确的,但我的答案更完整,我以前也发过:@Pablo那是个意外-抱歉,现在更正了:你的答案被接受了。你确实是对的!谢谢你帮助一个rails新手!你确实是对的!谢谢你帮助一个rails新手!
def ad_params
params.require(:ad).permit(:title, :cost, :description, :quantity, :phone, :email, :accepted, :category_id)
end