ПредишенСледващото

В раздел 4.4.5, ние накратко споменато идеята за масово разпределение, което означава Ruby-променливи стойности инициализация хеш:

За да се реши този проблем, предишните версии на релси, използвани attr_accessible метод на нивото на модела, но в Rails 4.0 е по-предпочитана техника, използвайки така наречените строги параметри на ниво контролер. Това позволява на нас, за да се регистрирате, което са необходими параметри и които са разрешени. Освен това, прехвърлянето на чисти хеш PARAMS (както е показано по-горе) ще доведе до грешка, т.е. Сега Релси заявление имунизиран срещу уязвимости маса naznachiniya подразбиране.

В този случай, ние искаме да се изисква присъствието на хеш PARAMS атрибут: потребител, и ние искаме да се даде възможност на присъствието на името атрибут, потребителско име, парола и password_confirmation (но само тях). Ние можем да се постигне това, както следва:

Този код ще се върне версията на PARAMS хеш, съдържаща само позволени атрибути (в този случай на грешка, ако няма атрибут ще се нарича: потребител).

За да се улесни използването на тези параметри обикновено се прилага спомагателен метод user_params наречен който връща съответното инициализация хеш използва вместо PARAMS [Потребителят]:

От user_params ще бъдат използвани само в рамките на ползвателите на контролера, и не е необходимо да го отворите за достъп до външни потребители чрез интернет, ние ще го направи лично с помощта на частния, както е показано на Обява 7.22. (Ще разгледаме по-подробно в раздел 8.2.1 лично.)

Обявата 7.22. Използване на строги параметри създават действие. ап / контролери / users_controller.rb

С кода в Обява 7,22 и не са валидни данни за изпращане тестове, трябва да преминат:

Съобщения за грешки при регистриране

Тук errors.full_messages обект (което видяхме за кратко в раздел 6.2.2) съдържа набор от съобщения за грешки.

Както и в конзолната сесия по-висока недостатъчност, освен в Обява 7.21 генерира списък с съобщения за грешки, свързани с @user на обекта. За да се покаже съобщения в браузъра, отдадем частични error_messages върху потребителския новата страница, както е показано на Обява 7.23. (Писане на съобщения за грешки тест е добра идея и ние ще оставим тези тестове като упражнение, виж раздел 7.6.) Заслужава да се отбележи, че този частични съобщения за грешка само от първия опит. окончателната версия е представена в точка 10.3.2.

Обявата 7.23. Код, за да се покаже съобщение за грешка в регистрационния формуляр. ап / възгледи / потребители / new.html.erb

Трябва да отбележим, че тук отдадем частични Споделени / error_messages "; отразяващ общото конвенция Rails, който предвижда поставянето на частични модели, които планираме да се използва в много контролери в посветена споделена директория /. Това означава, че ние трябва да се създаде нова директория с частичен _error_messages.html.erb файла. частичното себе си е показано на Обявата 7.24.

Обявата 7.24. Частичен за показване на съобщения за грешки, да изпратите формуляра за регистрация. ап / възгледи / сподели / _error_messages.html.erb

Този частичен модел въвежда няколко нови релси и Ruby конструкти, включително два метода за релси грешка обект. Първият метод е да брои, които просто се връща броя на грешките:

Друг нов метод е всеки. (? Заедно с празна), който е един от чифт допълнителни методи:

Тук виждаме, че празното метод. който за първи път се видяхме в раздел 4.2.3, в контекста на струни, тя също така работи по релси грешка обект vozvaraschaya вярно за празен обект, и фалшива друго. всеки метод? това е точно обратното на празна. Връща истина, ако има някаква елемент, и фалшива друго. (Между другото, всички тези методи - брои празна и всеки -. ?? Работата по Ruby масиви Ние ще намерите добро използване на този факт в раздел 10.2.).

Друга нова идея е работя по съвместителство текст помощник на. По подразбиране тя е недостъпна в конзолата, но очевидно ние можем да го включите чрез модул ActionView :: Помощници :: TextHelper. 9 Аз го намери чрез търсене в API работя по съвместителство релсите

Тук виждаме, че работя по съвместителство да има аргумент число и връща правилната версия на множествено число на втория си аргумент. Методът се основава на мощен inflector, който знае как да се преобразува в множествено число огромен брой думи (включително много от тях с грешен множествено число):

В резултат на това, кодът

Свързани статии

Подкрепете проекта - споделете линка, благодаря!