Условная проверка для Rails 5 - PullRequest
0 голосов
/ 26 июня 2018

У меня есть вложенная форма, и я хочу проверить некоторые поля, только если выбрано определенное поле.

Моё первое поле - это радио-кнопка:

<%= f.radio_button :type_doc, '5' %>
<%= f.radio_button :type_doc, '6' %>
<%= f.radio_button :type_doc, '7' %>

Затем (например), если я выберу радио-кнопку с типом '6', я хочу это

<%= f.text_field :number_doc, :placeholder => 'Number' %>

заполняется.

Я пытался, как объяснено в официальном документе: Проверка активной записи Rails

Итак, в моей модели doc.rb у меня есть это:

validates :number_doc, presence: true, if: :type_6?

def type_6?
  :type_doc == '6'
end 

Но это не работает, я все еще могу выбрать: type_doc == 6 и оставить поле пустым: number_doc.

Есть идеи?Спасибо

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Вы можете просто использовать лямбду:

 validates :number_doc, presence: true, if: -> { self.type_doc == '6' }
0 голосов
/ 26 июня 2018
   validates :number_doc, presence: true, if: :type_6?    
   def type_6?
     type_doc == '6' 
   end

Как предлагалось: -

validates :number_doc, presence: true, if: proc { |r| r.type_doc == '6' }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...