l0pez
September 28, 2009, 10:00am
1
Mam taki widok
[code=“ruby”]<% form_for(@hardware ) do |f| %>
<%= f.error_messages %>
<%= radio_button_tag("category", "A") %>
<%= radio_button_tag("category", "B") %>
<%= f.label :serial_number %>
<%= f.text_field :serial_number %>
<%= f.submit 'Create' %>
<% end %>[/code]
Jak dostać się się w modelu do informacji czy zaznaczono radio button A czy B?
Do serial_number wiem jak sie dostać.
> self.serial_number.
Pozdrawiam
Tomash
September 28, 2009, 12:02pm
2
<%= f.radio_button(:category, “A”) %>
<%= f.radio_button(:category, “B”) %>
params[:hardware][:category]
l0pez
September 28, 2009, 12:07pm
3
Ja nie mam pola category w bazie.
Chce tylko w zależności od tego które z tych pól będzie zaznaczone wywołać odpowiednie działanie w modelu.
w modelu mam:
[code=“ruby”]after_create :aaa
def aaa
if params[:category] == 'A' <- ???? sprawdzenie czy zaznaczono A ?
self.pass
else
self.blah
end
end[/code]
powyzsze nie dziala.
Dlatego ze w modelu nie mam pola category nie mozna uzuyc
<%= f.radio_button(:category, “A”) %>
<%= f.radio_button(:category, “B”) %>
tjeden
September 28, 2009, 12:12pm
4
Skąd model ma wiedzieć, że przekazujesz mu coś takiego jak category, jak mu nie przekazujesz.
musisz mieć w modelu:
def aaa( category )
...
end
i w kontrolerze:
@hardware.aaa( params[:category] )
Inaczej tego nie widzę.
EDIT:
Głupi jestem. Oczywiście, że można ładniej. Dodaj akcesor category do modelu i zrób tak jak pokazał Tomash.
l0pez
September 28, 2009, 12:25pm
5
Accessor cattr_accessor dodany.
l0pez
September 28, 2009, 12:49pm
6
Ok, wszytko już działa. Dzieki.
tjeden
September 28, 2009, 12:50pm
7
Dokładnie, wtedy będziesz miał dostęp do category wewnątrz modelu.
l0pez
September 28, 2009, 12:55pm
8
Widzę ze jest jeszcze mattr_accessor. Czym on praktycznie różni sie od cattr_accessora?
drogus
September 28, 2009, 1:51pm
9
To samo co cattr_accessor tylko dla modułu, a nie klasy.