Рельсы 3.2 Две формы, одна скрытая - PullRequest
0 голосов
/ 24 января 2012

У меня есть два раздела в форме, и у меня есть кнопка, которая переключает их видимость.Есть ли способ ограничить кнопку отправки от отправки параметров со скрытого?К сожалению, он создает курсы без имен или номеров и не выбирает существующий курс, если я использую collection_select.

projects / new.html.haml

= form_for [@user, @project] do |f|

  # This part of the form is mostly shown to the user, but is failing to work correctly
  = f.collection_select :course_id, @courses, :id, :name, { prompt: true }

  # This part of the form is typically hidden, javascript reveals it.
  .hidden
    = f.fields_for :course do |builder|
      = builder.text_field :name, class: 'large', placeholder: 'Ex: Calculus I'
      = builder.label :number, 'Number'
      = builder.text_field :number, class: 'new_project_course_number', placeholder: 'Ex: MATH-101'
      = builder.hidden_field :user_id, value: current_user.id

project.rb

belongs_to :user
belongs_to :course

attr_accessible :course_id, :course_attributes
accepts_nested_attributes_for :course

курс.rb

belongs_to :user
has_many :projects

user.rb

has_many :projects
has_many :courses

Пожалуйста, дайте мне знать, если я случайно исключил любую важную информацию.

1 Ответ

1 голос
/ 24 января 2012

Я думаю, что вы можете искать reject_if параметр для вашего вложенного набора атрибутов. Например:

accepts_nested_attributes_for : course, :reject_if => proc { |attributes| 
  attributes['name'].blank? 
}

Или как то так. Это позволяет вам оставить отправленную форму как есть, но только созданный вложенный объект курса, когда имя задано (в вашем случае есть какой-то заполнитель, поэтому вы можете использовать другую проверку здесь)

...