【问题标题】:How to show relation key and value model in Rails Simple Form?如何在 Rails 简单表单中显示关系键和值模型?
【发布时间】:2018-05-03 12:52:25
【问题描述】:

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

Kids 有 idname 列。课程有idkid_idkeyvalue 列。

课程keyvalue 将保留孩子的课程名称和分数。

但我不知道如何在 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 以在我的控制器中保存课程表?。

【问题讨论】:

  • 我觉得你需要github.com/ryanb/nested_form
  • 让我试试 :) ..
  • 你在用:accepts_nested_attributes_for吗?
  • 哦,好的,我添加了它,但我应该怎么做?

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


【解决方案1】:

将 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 %>

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

【讨论】:

  • 我如何输入多个键和值?因为我需要他们 5 个。
  • 这就是我构建 5 个对象的原因。每节课一个。请参阅控制器代码。
  • 我不明白这里会有什么:%w[Math English History ...]你能写详细点吗?
  • %w[Math English History] 只是写["Math" "English" "History"] 的一种不同但更短的方式。
  • 您错过了逗号@Roland Stunder。它将是["Math", "English", "History"]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-07
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
相关资源
最近更新 更多