Jestem całkiem nowy Rails i teraz natknąłem się na problem, który nie byłem w stanie rozwiązać z moim przyjacielem Google :)Railsy - jak sprawdzać poprawność pola, tylko jeśli inne pole ma określoną wartość?
W moim formularzu mam Wybierz z trzech wartości: Jabłko, Banana i Wiśnia. Jeśli wybiorę Apple z pola wyboru I chowaję pole wyboru i pole tekstowe z niektórymi Javascript, ponieważ po wybraniu Apple, nie ma już potrzeby wypełniania tych dwóch pozostałych pól.
Teraz mam problem z zatwierdzeniem mojego formularza po jego przesłaniu. Znalazłem kilka podobnych problemów na przykład w przypadku "Sprawdzaj tylko pole, jeśli inny jest pusty."
Ten problem został rozwiązany w ten sposób:
validates_presence_of :mobile_number, :unless => :home_phone?
Więc ja tylko starałem pierwszą rzeczą, która wpadła mi myśl:
validates_presence_of :state, :granted_at, :if => :type != 1
Ale kiedy go uruchomić, dostaję ten błąd :
undefined method `validate' for true:TrueClass
Więc teraz ja nie dowiedzieć się, w jaki sposób mogę uzyskać dostęp do wartości z obiektu, który został stworzony ... Z góry dziękuję za pomoc i mam nadzieję, że moje pytanie nie jest tak oczywista, jak to brzmi :-)
dziękuję za szybką odpowiedź :), ale co zawiera tę zmienną blokową "o"? obiekt, który jest sprawdzany? – TehQuila
Tak, dokładnie. Przyjrzyj się także odpowiedzi @ Hauleth, gdzie znajdziesz inne sposoby rozwiązania problemu. Ostateczne odwołanie można znaleźć w dokumentacji API Railsów: http://ar.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html. Co więcej, proponuję, abyś google dla "ruby procs and blocks", aby dowiedzieć się o podstawowych (rubinowych) elementach kryjących się za tym. Nadzieja, która pomaga. – Matt