Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails—在窗体上添加另一个类的数组_Ruby On Rails_Arrays_Forms - Fatal编程技术网

Ruby on rails Rails—在窗体上添加另一个类的数组

Ruby on rails Rails—在窗体上添加另一个类的数组,ruby-on-rails,arrays,forms,Ruby On Rails,Arrays,Forms,如果问题很简单,我很抱歉,我对Rails还相当陌生。我正在构建一个膳食计划应用程序,并尝试使用它,以便用户可以创建膳食,并将项目添加到该膳食中。例如,“鱼和薯条”一餐包括“鱼”和“薯条”。据我所知,我想我需要一种在膳食创建表单上创建一个项目数组的方法——但是我该怎么做呢 相关部分的膳食.rb: has_many :items accepts_nested_attributes_for :items 和item.rb belongs_to :meal 我需要向餐单部分添加什么才能让它接受一系列

如果问题很简单,我很抱歉,我对Rails还相当陌生。我正在构建一个膳食计划应用程序,并尝试使用它,以便用户可以创建膳食,并将项目添加到该膳食中。例如,“鱼和薯条”一餐包括“鱼”和“薯条”。据我所知,我想我需要一种在膳食创建表单上创建一个项目数组的方法——但是我该怎么做呢

相关部分的膳食.rb:

has_many :items
accepts_nested_attributes_for :items
和item.rb

belongs_to :meal
我需要向餐单部分添加什么才能让它接受一系列项目?对不起,我不知道从哪里开始!或者,如果有更简单的方法,请让我知道。但是我不想在这顿饭上有一个“item\u 1\u id”、“item\u 2\u id”等的列表!!谢谢

<%= form_for(@meal) do |f| %>
  <% if @meal.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@meal.errors.count, "error") %> prohibited this meal from being saved:</h2>

      <ul>
      <% @meal.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :category %><br />
    <%= f.text_field :category %>
  </div>

  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>

  <div class="field">
    <%= f.label :child_id %><br />
    <%= f.number_field :child_id %>
  </div>
  <div class="field">
    <%= f.label :time %><br />
    <%= f.date_select :time %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

禁止保存此餐:





有一个很棒的railscast插曲,讲述了这一点。此外,您还需要使用javascript创建一个“添加项”链接。下面的示例将始终有一个新项目可用

你会想做这样的事情

看法


从我们的案例场景中,我想到的第一件事是,您需要有
多对多
关系,而不是
一对多
<代码>一个项目可能属于多顿饭。关于将相关项目添加到一顿饭中,您可以使用gem。我正确理解你的问题了吗?是的,我想你理解了,谢谢你的建议,我会调查的!太棒了,谢谢你,我会调查这些,看起来正是我想要的。
<%= f.fields_for :items do |builder| %>
  <fieldset>

  </fieldset>
<% end %>
@meal.items.build