2011-07-28 24 views
5

Nie mogę znaleźć odpowiedzi na bardzo proste pytanie: "Jak zdefiniować własne pole wejściowe w formtastic?"Dodawanie niestandardowego pola wprowadzania w formtastic?

To jest to, co mam:

<%= semantic_form_for @someFantasticVariable, :url => "/someFantasticUrl.html" do |f|%> 
    <%= f.inputs do %> 
     <%= f.input :something_else_id, :required => true , :as => :select, :collection => SomethingElse.find(:all), :label =>"The something else"%> 
     <%= f.input :fantastic_max_cost, :label => "Budget (max cost)"%> 
    <%end%> 


    <%= f.buttons do%> 
     <%= f.commit_button :button_html => { :class => "primary", :disable_with =>  'Processing...', :id => "commitButton"}%> 
    <%end%> 
<%end%> 

Teraz ..

Chcę mieć bardzo prostą rzecz. Chcę reklamować pole, które nie jest częścią modelu. Chcę mieć pole daty, za pomocą którego mogę obliczyć pewne rzeczy w moim kontrolerze. Więc chcę to zrobić:

<%= f.inputs do %> 
    <%= f.input :something_else_id, :required => true , :as => :select, :collection => SomethingElse.find(:all), :label =>"The something else"%> 
    <%= f.input :fantastic_max_cost, :label => "Budget (max cost)"%> 
    <%= f.input :start_date, :as => :date , :label => "Start date"%> 
<%end%> 

Ale apparetly mi nie wolno, i nie mogę znaleźć jakiś sposób, aby to zrobić poprzez moją wbiliśmy googling. Każda pomoc/pomysły?

Odpowiedz

6

Jeśli masz jakiś atrybut, który nie jest częścią modelu, a następnie getter i setter powinny istnieć w modelu

def start_date 
end 

def start_date=(arg) 
end 

Następnie można obliczyć swój personel na kontrolerze lub cokolwiek chcesz:

... 
puts params[:somefantasticvariable][:start_date] 
... 

Ale to szybkie formtastic hack, należy znaleźć jakiś lepszy sposób, jak non-formtastic wejście z niektórymi css itp

+0

Co ja naprawdę chcę to po prostu dodatkowy parametr kiedy wysłać formularz. Ale zobaczę, czy to wystarczy. – Automatico

+0

To zadziałało :) Ale to wygląda jak włamanie. Byłoby miło, gdyby formtastic miał łatwy sposób dodawania pól, które nie są częścią modelu. Tak jak powiedziałem. Potrzebuję tylko parametru, kiedy wysyłam formularz, więc tak naprawdę nie należy do modelu. Ale to działa na razie. Dzięki :) – Automatico

+1

"Jeśli posiadasz jakiś atrybut, który nie jest częścią twojego modelu, to powinien on istnieć w modelu" Huh? –

1

Ruby dostarcza ok bazy mniej konstruować zapełnił attr_accessor. Jest to odpowiednik metod setera i gettera. Formtastic zobaczy ten atrybut podobny do atrybutu opartego na bazie danych.

W modelu @someFantasticVariable:

attr_accessor :start_date 

przypadku korzystania attr_accessible w modelu @someFantasticVariable, należy dodać zmienną start_date tam:

attr_accessible :start_date 

ponieważ atrybut jest typu mniej, Formtastic nie może wyprowadzić pola wejściowego HTML do użycia. Będziesz musiał ręcznie ustawić typ wejścia za pomocą :as. Na swoim przykładzie:

<%= f.input :start_date, :as => :date_select %> 

Cite:

Powiązane problemy