Как использовать несколько моделей в форме в Rails 3? - PullRequest
1 голос
/ 14 июля 2011

Я новичок в разработке Rails. У меня есть две модели, Решение и Выбор. Каждое решение имеет два варианта, которые должны быть добавлены в таблицу вариантов при сохранении решения. Я пытаюсь понять, как это сделать в Rails, используя Formtastic, но я ударился о стену.

Я наблюдал за Railscast о вложенных формах и следил за документацией на сайте Formtastic GitHub, но я в растерянности. Вот что у меня есть.

Модели:

class Decision < ActiveRecord::Base
  attr_accessible :title, :description, :user_id, :choices_attributes

  belongs_to :user

  has_many :choices, :dependent => :destroy

  accepts_nested_attributes_for :choices
end

class Choice < ActiveRecord::Base
  belongs_to :decision
end

В контроллере Decisions_Controller:

def new
    @decision = Decision.new
    2.times do 
      @decision.choices.build
    end
  end

Решения / новый взгляд:

<% semantic_form_for @decision do |form| %>
  <%= form.inputs :title, :description %>
  <%= form.inputs :summary, :for => :choice %> 
  <%= form.buttons %>
<% end %>

То, что я получаю, это поля формы для заголовка, описания и одного резюме (на выбор). Как заставить второй вариант отображаться и получить оба поля для сохранения?

1 Ответ

2 голосов
/ 14 июля 2011

Используйте :for => :choices вместо :for => :choice, поскольку это имя отношения, на которое вы хотите сослаться.

<%= semantic_form_for(@decision) do |form| %>
  <%= form.inputs :title, :description %>
  <%= form.inputs :summary, :for => :choices %>
  <%= form.buttons %>
<% end %>
...