2012-02-01 10 views
28

Mam następującą linię haml:jak ustawić atrybut class z form_tag w szynach

=form_tag :action => 'create', :controller => 'comments', :class => 'comment_form' do 

ale html, który pobiera moc wynosi:

<form accept-charset="UTF-8" action="/comments?class=comment_form" method="post"></form> 

Chcę ustawić klasę. Jak mam to zrobic?

< - Update ->

z tym:

=form_tag ({ :action => 'create', :controller => 'comments' }, { :class => 'comment_form' }) do 

otrzymuję ten błąd:

syntax error, unexpected ',', expecting ')' 
...', :controller => 'comments' }, { :class => 'comment_form' }... 

< - Druga aktualizacja ->

powyższy problem to przestrzeń pomiędzy "form_tag" i "(odpowiedź @ woahdae jest poprawna

Odpowiedz

50

form_tag przyjmuje 2 opcje skrótów, pierwszy przekazany do url_for, drugi przekazany do konstruktora formularzy.

Więc, co musisz zrobić, to lubię:

= form_tag({:action => 'create',...}, {:class => 'comment_form'}) do 

inaczej myśli pary szyn cały klucz/wartość są dla url_for, który dołączy żadnych kluczy nie rozumieją jako parametry zapytań.

+0

Kiedy użyć tego formatu, pojawia się błąd składni, mówiąc, że spodziewa się „}” po „: action =>«Utwórz»” – John

+0

@John, musisz popełnić błąd, ponieważ jest to sposób na zrobienie tego. Czy mógłbyś pokazać swój zaktualizowany kod? – Mischa

+0

@Mischa, patrz aktualizacja – John

8

Działa to dla mnie:

form_tag named_route, :method => :put, :class => 'disable_on_submit' 

Z Rails 3.0.15

-1

W przypadku znalazłeś na to pytanie i faktycznie chciał rozwiązać klasy nazewnictwa dla form_for:

<%= form_for @task, html: {:class => "custom_class"} do |f| %> 
+7

form_for jest inny niż form_tag. – Hut8

+0

@LaceCard Mimo to, jest to lepsza odpowiedź niż zaakceptowana. –

+1

@FellowStranger zaoszczędził mój czas :) –

1

You można wykonać jako:

form_tag your_path, method: :get, id: "your_id", class: "your_class" do 
end 
+0

To jest nieprawidłowe. To po prostu doda class = your_class do parametrów URL. –

4

na szynach 5, można wykonać następujące czynności:

<%= form_tag(your_named_path, {class: 'form-inline'}) do %> 

<% end %> 
Powiązane problemy