Rails 3.0, haml i formularze

Cześć,

mały problemik z ostatnią (stabilną!) wersją Railsów 3.0.0. Po zaktualizowaniu, nie wyświetlają mi się formularze. Haml 3.0.17 oraz z Gita wypróbowane, również starsze wersje Hamla.

Mój widok:

- form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
  %p
    = f.label :email, t("models.user.email")
  %p
    = f.text_field :email
  %p
    = f.label :password, t("models.user.password")
  %p
    = f.password_field :password
  - if devise_mapping.rememberable?
    %p
      = f.check_box :remember_me
      = f.label :remember_me, t("models.user.remember_me")
  %p
    = f.submit t("devise.sessions.link")

W tym wypadku nic nie jest wyświetlane. Natomiast kiedy zamieniam - na = w pierwszej linijce dostaję:

ActionView::Template::Error (form_for outputs directly to the Haml template. Disregard its return value and use the - operator, or use capture_haml to get the value as a String. ): 17: = f.label :remember_me, t("models.user.remember_me") 18: %p 19: = f.submit t("devise.sessions.link") app/views/devise/sessions/new.html.haml:20:in `_app_views_devise_sessions_new_html_haml__3472033986248112648_35893640_431353380906527808'
Pomysły?

UPDATE: Bug w HAMLu, już z resztą naprawiony w świeżutkim 3.0.18 :slight_smile:

w nowych railsach form_for i wszystkie inne helpery mają nowy syntax
zamiast

-form_for ...

piszemy

=form_for ...

[quote=phocke]w nowych railsach form_for i wszystkie inne helpery mają nowy syntax
zamiast

-form_for ...

piszemy

=form_for ...

[/quote]
Co im przyszło do głowy, że to zmienili???

W Railsach 3 inaczej są traktowane bloki w widokach. Przyszło im do głowy, że jak zrobisz w ruby coś takiego:

[code]def method_with_block
result = yield

’ + result + ‘

end

html = method_with_block do ‘foo’ end[/code]
to w zmiennej html powinien być wynik metody method_with_block, a do tej pory w railsowych widokach tak nie było. Przy okazji nowa implementacja ułatwia tworzenie helperów z blokami (nie trzeba uciekać się do metod zaimplementowanych przez railsy).

Więcej na blogu Katza: http://yehudakatz.com/2009/08/31/simplifying-rails-block-helpers-with-a-side-of-rubinius/

Ok. W zasadzie to ma jak najbardziej sens - pisanie helperów z blokami, to faktycznie jest walka, co widać po jednym z ostatnich wątków na forum.
Jest już może jakiś obtestowany skrypt, który dostosowuje widoki do nowej składni?

coś takiego jest :slight_smile:

później odpalasz

rake rails:upgrade:check

bardzo fajne

[quote=phocke]w nowych railsach form_for i wszystkie inne helpery mają nowy syntax
zamiast

-form_for ...

piszemy

=form_for ...

[/quote]
nope. Nie aktualne. Znowu używamy:

- form_for ...

:slight_smile:

Whaaa? :smiley:

Chłopcy znów zmienili?

[quote=hubertlepicki]nope. Nie aktualne. Znowu używamy:

- form_for ...

:)[/quote]
Skąd takie informacje? Przerzuciłem właśnie aplikację z hamlem na stable (wcześniej miałem HEAD z gita) i mam z =.

Tak samo jest np. w devise: http://github.com/plataformatec/devise/blob/master/app/views/devise/registrations/edit.html.erb

Rzeczywiście, w hamlu działa i tak i tak. Przez jakiś czas form_for działał tylko z “-”, teraz działa z oboma.