Используя помощников проверки направляющих: передайте, но хотите это, не перечисляя имя столбца в сообщении

Вы можете добавить следующий код до addSubview

  toViewController.view.frame = [transitionContext finalFrameForViewController:toViewController];

С другого вопроса custom-transition-for-push-animation-with-navigationcontroller-on-ios-9

Из документации Apple для finalFrameForViewController:

Возвращает прямоугольник конечного кадра для указанного представления контроллера представления.

Прямоугольник, возвращаемый этим метод представляет размер соответствующего представления в конце перехода. Для представления, которое рассматривается во время презентации, значение, возвращаемое этим методом, может быть CGRectZero, но оно также может быть допустимым прямоугольником рамки.

blockquote>

21
задан daustin777 27 March 2009 в 15:40
поделиться

4 ответа

Существует гем сообщения об ошибке клиента, который должен делать то, что вы хотите

https://github.com/jeremydurham/custom-err-msg

It позволяет вам переопределить обычную конструкцию сообщения и самостоятельно определить полное сообщение следующим образом:

: message => "^ Ваш адрес электронной почты выглядит не так, как надо, пожалуйста, попробуйте еще раз"

Обратите внимание на символ ^, который говорит рельсам НЕ начинать что-либо, просто используйте сообщение точно так, как определено, (за исключением того, что он удаляет ^)

Если вы не поставите ведущий ^, то вы получите обычную ошибку, сгенерированную рельсами сообщение.

6
ответ дан 29 November 2019 в 20:55
поделиться

Я сделал это таким образом, чтобы переопределить ВСЕ сообщения, а не использовать помощники форм Rails для отображения сообщений об ошибках.

Это кажется большим трудом, но на самом деле у него есть несколько хороших преимуществ. Вы получаете полный контроль над сообщением, а затем можете реализовать собственный конструктор форм, который может помещать сообщения об ошибках в строку, что удобнее для пользователя.

Вы используете его так:

validates_uniqueness_of: foobar,: message => «Панель foobar не уникальна.»

Тогда не используйте full_messages при печати сообщения об ошибке.

1
ответ дан 29 November 2019 в 20:55
поделиться

Это лучшее объяснение, которое я смог найти.

http://adamhooper.com/eng/articles/5

По сути, в инициализаторе измените метод full_messages в ActiveRecord.Errors, чтобы возвращать полные предложения (не имя_столбца, конкатенации сообщений), если вы даете: message атрибут в проверке.

Обновление - Если вы попробуете код Адама, вам придется использовать файл свойств en.yml, в противном случае он не будет работать должным образом. Вы можете сделать это или обойти это, дополнительно изменив метод full_messages. У меня это работает. Я добавил следующее к инициализатору (/imitializers/active_record_errors.rb)

if RAILS_GEM_VERSION =~ /^2\.3/
  ActiveRecord::Errors.class_eval do
    # Remove complicated logic
    def full_messages
      returning full_messages = [] do
        @errors.each_key do |attr|
          @errors[attr].each do |message|
            next unless message
            if attr == "base"
              full_messages << message
            elsif message =~ /^\^/
              full_messages << $'            #' Grabs the text after the '^'
            else 
              attr_name = @base.class.human_attribute_name(attr)
              full_messages << attr_name + I18n.t('activerecord.errors.format.separator', :default => ' ') + message 
            end  
          end 
        end 
      end 
    end 
  end 
end

Адам также приводит веские аргументы в пользу модификации Rails для поддержки этого в усилиях по интернационализации.

3
ответ дан 29 November 2019 в 20:55
поделиться

ссылка на rubyforge не работает, вот плагин настраиваемых сообщений об ошибках на github:

http://github.com/gumayunov/custom-err-msg

1
ответ дан 29 November 2019 в 20:55
поделиться
Другие вопросы по тегам:

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