Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用简单形式gemf.association为新操作提供NoMethodError_Ruby On Rails_Ruby_Ruby On Rails 5_Simple Form_Simple Form For - Fatal编程技术网

Ruby on rails 使用简单形式gemf.association为新操作提供NoMethodError

Ruby 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' 你是说?类别 类别= 知道问题出在哪里吗?此

我正在创建一个允许人们发布广告的网站。在创建新广告时,我希望他们从my seeds.rb中的预填充列表中为该广告选择一个类别。因此,我建立了以下模型和关联

app/models/ad.rb

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