【问题标题】:Form to accept a record and multiple associated records?接受一个记录和多个关联记录的表格?
【发布时间】:2021-02-12 16:48:58
【问题描述】:

如果一个用户有_许多技能,并且一个技能属于_一个用户:

class User < ApplicationRecord
  has_many :skills
  validates_length_of :skills, maximum: 5
end
class Skill < ApplicationRecord
  belongs_to :user
  validates_associated :user
end

如何制作一个接受用户和多种技能的表单?

这是一个包含用户和一个技能的表单,但我不知道如何让它接受同一个表单中的多个技能?

<%= form_for(@user) do |f| %> 
  
  <%= f.label :bio %><br>
  <%= f.text_field :bio %>

   <%= fields_for "user[skill]", @user.skill do |skill_fields| %>
      <%= f.label :skill %><br>
      <%= skill_fields.text_field :name %>
   <% end %>

  <%= f.submit "Apply", class: "btn btn-primary" %>
<% end %>

请注意,最好将 (5) 个字段显示在屏幕上,而不是使用 javascript 动态生成。

【问题讨论】:

  • github.com/nathanvda/cocoon - 检查是否有帮助
  • @user11350468 感激不尽,我会研究茧。现在我想如果可能的话我更喜欢使用香草导轨

标签: ruby-on-rails ruby-on-rails-6 form-for


【解决方案1】:

accepts_nested_attributes_for

您可以考虑使用 Rails 内置的accepts_nested_attributes_for

请查看Active Record Nested Attributes 文档,尤其是One-to-many 部分。

这是关于如何为accepts_nested_attributes_for - 10 Building Complex Forms 生成 Rails 表单的官方指南。

【讨论】:

  • 谢谢,我已经阅读了第一个链接的全部内容,但其中没有视图代码 :( 我还阅读了第二个链接 (guides.rubyonrails.org/form_helpers.html#nested-forms),但我错过了第 10.2 节,所以我马上试试
  • 我意识到 10.2 只有一个 Person 的地址。但在我的示例中,我需要 Person 的多个地址。是否可以在视图中显示如何做到这一点?
  • 对不起,我有点不清楚,你为什么这么说10.2 has only one address for the Person?如果我没有遗漏什么,10.1 配置模型中的 Person 类 has_many :addresses.
  • 也许,RailsCast 会有所帮助? railscasts.com/episodes/196-nested-model-form-part-1
  • 啊,成功了,我忘记了form.fields_for之前的form
猜你喜欢
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多