Pole w formularzu

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

<%= f.radio_button(:category, “A”) %>
<%= f.radio_button(:category, “B”) %>
params[:hardware][:category]

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”) %>

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. :slight_smile:

Accessor cattr_accessor dodany.

Ok, wszytko już działa. Dzieki.

Dokładnie, wtedy będziesz miał dostęp do category wewnątrz modelu.

Widzę ze jest jeszcze mattr_accessor. Czym on praktycznie różni sie od cattr_accessora?

To samo co cattr_accessor tylko dla modułu, a nie klasy.