Как пропустить проверку в проверенном поле в одном из условно? - PullRequest
1 голос
/ 15 ноября 2011

Я пытаюсь сохранить форму для модельного фильма. Но в конце формы у меня есть две радиокнопки, которые при нажатии на каждую из них будут отображать дополнительное скрытое поле (изначально я скрываю эти поля). Предполагается, что используется пользовательвыбрать только одну радиокнопку, чтобы щелкнуть и заполнить дополнительное поле (поле производителя или директора). Все поля в этой модели: validated_presence_of. Проблема в том, что при нажатии на одну радиокнопку и заполнении данного текстового поляозначает, что другое поле, скрытое в другом переключателе, будет пустым, поэтому форма не будет отправлена ​​(из-за validated_presence_of). Как мне обойти это? Спасибо

 <%= form_for @movie ,:url=>{:action =>"create"} do |f|%>
 <%= f.error_messages %>       
 <%=f.text_field :title%>
 <%= f.text_field :description%>

<%= f.radio_button :drama "drama" %>     
<div style="display:none"><%= f.text_field :director %></div>#this is displayed with javscript when you click radio button

   <%= f.radio_button :action "action" %>
  <div style="display:none"><%= f.text_field :producer %></div> #this is displayed with javscript when you click radio button
    <%= f.submit "post"%>

Модель

      class Movie < ActiveRecord::Base
       validates_presence_of :title
   validates_presence_of :description
       validates_presence_of :director
   validates_presence_of :producer
       end

Схема

      create_table "movies", :force => true do |t|
      t.string   "title"
      t.text  "description"
      t.boolean  "drama",                                     
      t.boolean  "action"
     end

Ответы [ 3 ]

4 голосов
/ 15 ноября 2011

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

Очевидное решение: не навязывать присутствие каждого поля.Возможно, вы хотите проверить, присутствует ли хотя бы один из: Director и: продюсер.Взгляните на условная проверка .

ETA: пример

validates_presence_of :director, :if => "producer.blank?"
validates_presence_of :producer, :if => "director.blank?"
1 голос
/ 15 ноября 2011

Попробуйте это:

class Movie < ActiveRecord::Base
  validates_presence_of :title
  validates_presence_of :description
  validates_presence_of :director, :if => Proc.new { |m| m.producer.blank? }
  validates_presence_of :producer, :if => Proc.new { |m| m.director.blank? }
end
0 голосов
/ 15 ноября 2011

Вы можете посмотреть Условные проверки с помощью ActiveRecord, там вы можете иметь пользовательскую проверку и вложенную проверку условных проверок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...