首页 > 解决方案 > 如何在 Rails 简单表单中显示关系键和值模型?

问题描述

在我的应用程序中,我有kidslessons表。

孩子们有idname专栏。课程有, id,kid_id列。keyvalue

课程key并将value保留孩子的课程名称和分数。

但我不知道如何在 Rails 中显示课程simple form?在我的表格中,必须有 5 节课,比如数学、英语等。我想做的是:

Name <input type='text' name='name' placeholder='Kid Name'>

Math <input type='text' name='key["math"]' placeholder='Score'> 

English <input type='text' name='key["english"]' placeholder='Score'>

History <input type='text' name='key["history"]' placeholder='Score'>

我不知道以 Rails 简单的形式显示并保存它。是否可以使用相同的名称并执行 foreach 以在我的控制器中保存课程表?

标签: ruby-on-railsrubyruby-on-rails-5simple-formsimple-form-for

解决方案


将 gem nested_form添加到您的项目中,然后您可以这样做:

控制器动作

# Find Kid instance (or build one based on what action you are in)
@kid = Kid.find(<id>)

# Assuming you have an association `has_many :lessons` in `Kid` model, build 5 Lesson instances related to @kid
@lessons = %w[Math English History ...].each { |l| @kid.lessons.build(key: l) }

看法

<%= form_for @kid do |f| %>
  <%= f.fields_for :lessons do |l| %>
    <%= l.text_field :key %>
    <%= l.text_field :value %>
  <% end %>
<% end %>

警告:代码未经测试。它只提供了一个实现的想法。


推荐阅读