validates_presence_of +: обменивайтесь сообщениями показывает название поля

Я создаю приложение для направляющих, и мне назвали модель User. В этой модели мне назвали булево значение isagirl. Пользователь должен указать, является ли это девочка или нет, который сделан двумя переключателями. В моей модели у меня есть это:

validates_presence_of :isagirl, :message => "You must be either a Boy or a Girl. If not, please contact us."

Однако, когда я не указываю пол, я вижу это:

Isagirl You должен быть или Мальчиком или Девочкой.

как сообщение об ошибке. Проблема состоит в том, что 'Isagirl' не должен быть там в сообщении об ошибке. Как я могу отключить это? И не, использование CSS для сокрытия его не является никакой опцией.

Спасибо

10
задан 25 June 2012 в 08:38
поделиться

4 ответа

Я делаю это для вывода сообщения без имени поля. Например, у меня есть партиал, который выводит сообщения об ошибках после сбоя проверки.

<ul>
    <% errors.each do |attribute, message| -%>
        <% if message.is_a?(String)%>
            <li><%= message %></li>
        <% end %>
    <% end -%>
</ul>

Обратите внимание, что это не выводит атрибут. Вам просто нужно убедиться, что все ваши сообщения имеют смысл без имени атрибута.

8
ответ дан 29 October 2019 в 02:52
поделиться

Я не знаю, как опустить имя атрибута в функции validates_presence_of (это может быть болезненно без грязного взлома), но я бы использовал функцию проверки, чтобы добиться того, чего вы хотите:

protected
    def validate
      errors.add_to_base("You must be either a Boy or a Girl. If not, please contact us.") if params[:isagirl].blank?
    end

Я специально использовал пустой метод? здесь, потому что validates_presence_of использует пустой? для теста вы должны получить такое же поведение.

add_to_base добавляет общие сообщения об ошибках, не связанные с атрибутами, и это избавляет вас от взлома представления.

0
ответ дан 29 October 2019 в 02:52
поделиться

В одном из своих проектов я использовал плагин custom-err-msg . С его помощью, когда вы указываете сообщение об ошибке следующим образом:

:message => "^You must be either a Boy or a Girl. If not, please contact us."

(обратите внимание на ^ в начале), он не будет печатать имя атрибута при печати ошибок. И вы можете использовать стандартные error_messages или error_messages_for помощников.

5
ответ дан 29 October 2019 в 02:52
поделиться

Я рекомендую использовать параметр errors.add_to_base. Не зная, как выглядит ваш макет, это будет самый простой способ получить простое сообщение об ошибке.

0
ответ дан 29 October 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: