Принадлежит родительской форме с вложенной формой has_many в Rails 3

Сокращенные модели:

class Event < ActiveRecord::Base
  belongs_to :place
  accepts_nested_attributes_for :place  
end

class Place < ActiveRecord::Base
  has_many :events  
end

Сокращенный контроллер событий:

  def new
    @event = Event.new
    @event.build_place

  def create
    @event = Event.new(params[:event])

    respond_to do |format|
      if @event.save

Сокращенный вид:

<%= form_for(@event) do |f| %>
<%= fields_for @event.place do |place_f| %>

Учитывая вышесказанное... Я хочу, чтобы пользователь мог создать событие. Когда они создают событие, у них есть возможность добавить место. Место может или не может существовать в базе данных.

Прямо сейчас, место не связано или создано при отправке формы, но оно определенно находится в параметрах записи.

Есть мысли о том, что я делаю не так? Это для Rails 3.

1 ответ

Если вы не хотите, чтобы пользователь мог заполнить атрибуты места, удалите @event.build_place от твоего new действие в контроллере, как это

def new
  @event = Event.new
end

и удалить <%= fields_for @event.place do |place_f| %> заблокировать с вашей точки зрения.

Другие вопросы по тегам