Отправка нескольких экземпляров класса с использованием форм Rails - PullRequest
0 голосов
/ 26 февраля 2012

У меня есть несколько интересных затруднений. У меня есть поле :ingredients, которое я использую, чтобы получить пользовательский ввод для ингредиента. Каждый ингредиент принадлежит к рецепту, который является form_for (:ingredients является field_for). Однако пользователь должен иметь возможность вводить несколько ингредиентов, неограниченное количество. Прямо сейчас я реализовал функциональность для добавления одного ингредиента, как показано здесь:

<%= form_for(:recipe, :url => {:action => 'create'}) do |f| %>

    <%= fields_for :ingredient do |i| %>
         <%= i.text_field(:quantity, :size => '6', :maxlength => '6') %>
         <%= i.text_field(:units, :size => '20', :maxlength => '20') %> 
    <% end %>

<% end %>

Чтобы упростить вещи, я собираюсь отменить неограниченное требование, которое я сделаю позже с AJAX, и предположу, что пользователь только вводит максимум 20. Я запутался в том, как проектировать мои form_for чтобы сделать это, и получить доступ к каждому из этих 20 элементов в моем контроллере. Это будет что-то вроде params[:recipe][1...20]?

Я прочитал этот вопрос: Как я могу создать несколько экземпляров ассоциированной модели из рельсов 3 form_for, если я не знаю, сколько я собираюсь добавить?

но я все еще застрял, и я хотел бы избежать использования Gems, если это возможно (глупое ограничение, я знаю).

1 Ответ

1 голос
/ 26 февраля 2012

Взгляните на nested_form самоцвет, чтобы добавить multiple ingredients.Также посмотрите на

class Recipe < ActiveRecord::Base
  accepts_nested_attributes_for :ingredients
end

внутри контроллера рецептов, новое действие ..

def new
    @recipe = Recipe.new
    @recipe = @recipe.ingredients.build
end

вид изнутри

<%= nested_form_for(@recipe, :url => {:action => 'create'}) do |f| %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...