ruby-on-rails - 如何通过关系访问 has_many 的表单数据?

标签 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

Collection select 为我提供了一个下拉菜单来选择一个专业人士,我想使用此信息在我的数据库中为该专业人士创建一个“功能”,从而允许我将系列和专业人士链接在一起。

How can I access the data in this form so I can run @series.features.create(pro_id: @pro.id) or equivalent in the create method?

最佳答案

我可能完全错了,但我认为如果你运行类似 @series.pros.create(params) 的东西,你将拥有正确填充连接表所需的内容。

关于ruby-on-rails - 如何通过关系访问 has_many 的表单数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47999457/

相关文章:

ruby-on-rails - Ruby on Rails 中的多对多多态关联

ruby-on-rails - 在 rails 中建模嵌套模型

ruby - 包含模块时 __callee__ 的意外值——这是 Ruby 错误吗?

ruby - Readline 在 rvm 中不工作 - Ubuntu 11.10

ruby-on-rails - rails 4.2 : Getting "Unpermitted parameters" on user creation after adding `protected_attributes` gem

ruby-on-rails - Ruby 循环和感知复杂度

ruby-on-rails - 如何重置我的 sidekiq 计数器?

ruby-on-rails - Azure DevOps - 自动运行 Rails 迁移

ruby-on-rails - 如何对 Rails 事件模型序列化程序的响应进行排序

Ruby Prawn - 确定单间距字体的宽度