Ruby on rails 使用选择框和外键在Rails中创建新记录时遇到问题

Ruby on rails 使用选择框和外键在Rails中创建新记录时遇到问题,ruby-on-rails,ruby,rails-activerecord,rails-console,rails-models,Ruby On Rails,Ruby,Rails Activerecord,Rails Console,Rails Models,Ruby on Rails新手 TL;DR:当尝试创建新记录时,我收到一条错误消息,说我的外键必须存在。我正在视图中使用选择框。需要帮助。 我正在为我们公司的支持人员创建一个请求管理系统。到目前为止,我已经为问题和2个模型生成了一个脚手架,一个用于类别,另一个用于子类别 到目前为止,我提出的关系是这样设计的: 问题属于类别和子类别 子类别属于类别 这意味着用户的键盘可能有问题,他将为此产生问题。这些问题属于名为“外围设备”的子类别,而“外围设备”又属于更广泛的“硬件”类别 我仍然需要实现Ajax

Ruby on Rails新手

TL;DR:当尝试创建新记录时,我收到一条错误消息,说我的外键必须存在。我正在视图中使用选择框。需要帮助。

我正在为我们公司的支持人员创建一个请求管理系统。到目前为止,我已经为问题和2个模型生成了一个脚手架,一个用于类别,另一个用于子类别

到目前为止,我提出的关系是这样设计的:

问题属于类别和子类别 子类别属于类别

这意味着用户的键盘可能有问题,他将为此产生问题。这些问题属于名为“外围设备”的子类别,而“外围设备”又属于更广泛的“硬件”类别

我仍然需要实现Ajax来为我的选择框获取数据,但是在一个更简单的场景中测试它时,我无法从“新问题”视图创建问题。我遇到一条错误消息,说类别和子类别必须存在。到目前为止,我已经复习了我写的东西,但没有发现我的错误

以下是问题控制器中创建方法的代码

def create
  @issue = Issue.new(issue_params)

  respond_to do |format|
    if @issue.save
      format.html { redirect_to root_path, notice: 'Issue was successfully created.' }        
    else
      @categories = Category.enabled
      @subcategories = Subcategory.enabled
      format.html { render :new }        
    end
  end
end
这是我的模型

发行模式:

class Issue < ApplicationRecord
  belongs_to :category
  belongs_to :subcategory
end
class Category < ApplicationRecord
  has_many :subcategories
  has_many :issues

    enum status: { disabled: 0, enabled: 1 }

    after_initialize :set_defaults

  def self.enabled
    where(status: 'enabled')
  end

    def set_defaults
        self.status ||= 1
    end
end
Processing by IssuesController#create as HTML
Parameters: {"utf8"=>"✓",  "authenticity_token"=>"tzKDayYfEbEwTaOFup/N9kQ+8tr9c0P5otV2B0boKGrgyv+HkQaEvYJ6ZMQeR+8XgCnhJR6PosVcx0jPJpqBEA==", "category_id"=>"1", "subcategory_id"=>"1", "issue"=>{"description"=>"Replace broken keyboard.", "status"=>"1", "criticality_level"=>"1"}, "commit"=>"Create Issue"}


有谁能给我一个如何解决这个问题的提示吗?谢谢大家

修改创建操作,如下所示

def create
  @category = Category.find(params[:category_id])

  @issue = @category.issues.build(issue_params)

  respond_to do |format|
    if @issue.save
      format.html { redirect_to root_path, notice: 'Issue was successfully created.' }        
    else
      @categories = Category.enabled
      @subcategories = Subcategory.enabled
      format.html { render :new }        
    end
  end
end
def create
  @category = Category.find(params[:category_id])

  @issue = @category.issues.build(issue_params)

  respond_to do |format|
    if @issue.save
      format.html { redirect_to root_path, notice: 'Issue was successfully created.' }        
    else
      @categories = Category.enabled
      @subcategories = Subcategory.enabled
      format.html { render :new }        
    end
  end
end