Rails collection_select传递id

时间:2014-02-06 21:00:12

标签: ruby-on-rails-4

我已经阅读了很多问题,但他们都没有帮我解决这个问题。我正在尝试创建一个表单来创建新论坛,但无法让他们使用正确的类别ID。

<%= f.collection_select :category_id, Category.all, :id, :name %>

这会创建一个新论坛,但ID不是下拉列表中的类别ID。这是论坛模型

def new
    @forum = Forum.new
  end

  def create
    @forum = Forum.new(forum_params)
    if @forum.save
      redirect_to root_url
    else
      render 'new'
    end
  end

  private

   def forum_params
      params.require(:forum).permit(:category_id, :name, :description )
    end

end

不太确定我在这里做错了什么。这与外键有关吗?真的很感激任何帮助。

更新

论坛模型

class Forum < ActiveRecord::Base
  belongs_to :category
  has_many :topics, dependent: :destroy
end

类别模型

class Category < ActiveRecord::Base
  has_many :forums, dependent: :destroy
end

1 个答案:

答案 0 :(得分:0)

category_id模型中基本上没有Forum

您可以采取以下措施来解决此问题。运行:

rails dbconsole
.schema

检查您是否有category_id。如果没有,请为此创建一个新的迁移。

您的初始代码是正确的。出于某种原因,我误读了你的collection_select已经绑定到模型。