2009-09-19 10 views
6

Stosowanie tego samego formularza częściowego zarówno w przypadku tworzenia, jak i edycji w moim przypadku nowego i podglądu. częściowe wygląda mniej więcej tak (ja używam haml)= button_to nie generuje formularza, jeśli jest już w innej formie

=form_tag ({:action => params[:action]}, :multipart => true) 
    =text_field :newsletter, :title 
    =text_area :newsletter, :body 
    =file_field :newsletter,:attachment 
    -if params[:action] == "preview" 
    =button_to "select contacts and send", :action => "contacts" 
    =submit_tag "save and preview" 

ale w HTML-wyjścia jest

... 
<input type="submit" value="select contacts and send"/> 
<input type="hidden" value="rwYnZlEpWV4dR89zjgprEALBYmP0xqM3lnKt9JDLyak=" name="authenticity_token"/> 
<input type="submit" value="save and preview" name="commit"/> 
... 

dlaczego nie button_to wygenerować przycisk z utworzeniem?

rozwiązaniem jest utrzymanie przycisku poza częściowym i tylko 1 w jednym formularzu, , ale w jaki sposób mogę mieć 2 przyciski w tej samej formie?

edit: inny obejście będzie ukryty checkbox, który jest ustawiony przez javascript jeśli button_to zostanie naciśnięty i wysyła formularz, oddzielając je w sterowniku

Odpowiedz

12

HTML w rzeczywistości nie pozwalają na formularze zagnieżdżone. Niektóre przeglądarki działają, ale w innych dostrzeżesz szalone zachowanie. Czy kod HTML wyświetla surowe wyjście lub obliczony DOM z firebug?

Preferowanym sposobem postępowania w tej sprawie jest przeniesienie numeru button_to poza inny formularz. Jeśli jesteś fajny dzięki opcjom JS-only, możesz użyć link_to :method => :post i nadać linkowi styl przypominający przycisk.

1

W końcu używany

:name => 'otheraction' 

w sterowniku następnie sprawdzić, czy obaj

params[:commit] or params[:otheraction] 

był w hash params