Добавить существующие объекты в другой объект (Ruby on Rails) - PullRequest
0 голосов
/ 12 января 2011

У меня есть модель предмета и модель цикла. Модель предмета принадлежит циклу, а в цикле много предметов. Модель изделия имеет значение штрих-кода и значение cyc_id.

Я хочу иметь шаблон цикла показа, который имеет 10 пустых полей для ввода значений штрих-кода. Предположим, что в базе данных уже существует 100 элементов (со значениями штрих-кода, но без цикла_идентификации). Когда значения штрих-кода вводятся в поля, приложение должно извлекать каждое введенное значение штрих-кода и обновлять связанный элемент с помощью cyc_id текущего выбранного цикла.

Это может быть слишком широкий вопрос, но я часами крутился в кругах и даже не знаю, с чего начать. Любая помощь очень ценится. Спасибо!

Ответы [ 2 ]

1 голос
/ 12 января 2011

В ваших циклах новой / редактируемой формы я бы добавил десять пустых полей ввода где-нибудь в вашей форме.Не самый лучший пример разметки, но что-то вроде этого:

<% 10.times do %>
  <input name="barcodes[]" />
<% end %>

Тогда в вашем контроллере циклов я найду цикл, затем добавлю все введенные штрих-коды.Я предполагаю, что вы не хотите, чтобы они создавали новые штрих-коды, если они не существуют.(Это синтаксис Rails 3)

def update
  @cycle = Cycle.find(params[:id])

  barcodes = Item.where(:barcode => params[:barcodes])
  @cycle.barcodes = barcodes

  @cycle.save
end
0 голосов
/ 12 января 2011

Предположим, вы хотите добавить товары с идентификаторами штрих-кода 1, 2, 3, 4 в цикл с идентификатором 1. Вы можете сделать

cycle = Cycle.find(1)
[1, 2, 3, 4].each do |barcode|
   item = Items.where(:barcode => barcode)
   cycle.items << item
end
cycle.save

или

cycle = Cycle.find(1)
[1, 2, 3, 4].each do |barcode|
   item = Items.where(:barcode => barcode)
   item.cycle = cycle
   item.save
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...