1

質問が非常に単純である場合は申し訳ありません。私はRailsにかなり慣れていません。私は食事プランナーアプリケーションを構築しています.ユーザーが食事を作成し、その食事にアイテムを追加できるようにしようとしています. たとえば、「フィッシュ & チップス」の食事には、「フィッシュ」と「チップス」の項目が含まれます。私が理解しているように、食事作成フォームでアイテムの配列を作成する方法が必要だと思いますが、どうすればよいですか?

食事.rbの関連部分:

has_many :items
accepts_nested_attributes_for :items

と item.rb

belongs_to :meal

アイテムの配列を受け入れるために、食事フォームのパーシャルに何を追加する必要がありますか? 申し訳ありませんが、どこから始めればよいかわかりません。あるいは、もっと簡単な方法があれば教えてください。しかし、私は食事に「item_1_id」、「item_2_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 %>
4

1 に答える 1

0

これをカバーする素晴らしい Railscast エピソードがあります。また、javascript を使用して「アイテムの追加」リンクを作成することもできます。以下の例では、常に 1 つの新しいアイテムが利用可能です。

あなたはこのようなことをしたいでしょう

見る

<%= f.fields_for :items do |builder| %>
  <fieldset>

  </fieldset>
<% end %>

コントローラ

@meal.items.build

http://railscasts.com/episodes/196-nested-model-form-part-1

http://railscasts.com/episodes/197-nested-model-form-part-2

于 2013-03-09T13:02:57.867 に答える