如何访问has_many_through关系的表单数据?

时间:2017-12-27 22:39:34

标签: ruby-on-rails ruby

这个应用程序的要点是' Pros'有多个视频系列,由多个视频组成。

我的问题在于每个专业版可以在多个视频中展示,每个系列都可能包含多个专业人士。我把它设置为“有很多通过'关系,职业选手和连续剧可能有很多特点。但每个功能属于一个专业版和系列(连接表)。

因此我宣布我的模型是这样的:

class Pro < ApplicationRecord
    has_many :features
    has_many :series, through: :features
end

class Series < ApplicationRecord
    has_many :features
    has_many :pros, through: :features
    has_many :videos
end

class Feature < ApplicationRecord
    belongs_to :pro
    belongs_to :series
end

专业人士以他们自己的形式正常创建,但是在创建系列时,我想指定系列中的哪些专业人士。

我曾尝试过:

def new
    @pro = Pro.new
end

def create
    @pro = Pro.new(pro_params)

    if @pro.save
        redirect_to pros_path
    else
        render 'edit'
    end
end

到目前为止相当正常的东西......

但是,在:〜\ views \ series_form.html.haml中。 我试图从下拉框中为系列选择专业人士...

= form_for @series do |f|
%p
    Title:
    = f.text_field :title
= fields_for(@series, @series.pros) do |u|
    %p= collection_select(:pro, :pro_id, @pros.all, :id, :name, prompt: :true)
%p= f.submit "Submit"
link_to "Back", root_path

收藏选择为我提供了一个下拉菜单来选择专业人士,我想使用这些信息创建一个&#39;功能&#39;对于我的数据库中的专业人士,允许我将系列和专业人士链接在一起。

  

如何访问此表单中的数据,以便在create方法中运行@ series.features.create(pro_id:@ pro.id)或等效文件?

1 个答案:

答案 0 :(得分:0)

我可能完全错了,但我认为如果您运行类似@series.pros.create(params)的内容,则可以正确填充连接表,从而获得所需的内容。