Rails 'form_for' u kullanın ancak <form> öğesinde özel sınıflar, öznitelikler belirleyin?


91

form_forbir öznitelik gibi 'ekstra' öznitelikleri yok data-foosayıyor veya ikinci argümanında classolduğu gibi geçiriliyor gibi görünüyor options.

= form_for @user, {:url => 'foo', :class => 'x', 'data-bar' => 'baz' } do |f|
  # ...

Çıktı, sınıfı veya niteliği <form>olmayan bir etikettir .xdata-bar

Düzeltme nedir?

Veya FormBuilderkullanmadan bir örneği nasıl yakalayabilirim form_for?

Yanıtlar:


194

:htmlHash'i kullanın :

= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} do |f|

Veya

= form_for @user, html: {class: 'x', data: { bar: 'baz' } } do |f|

1
Ben bu işe yaramazsa bulundu: = form_for @user, :html => {'class' => 'x'} do |f|. classdize yerine sembol olmalıdır.
Trantor Liu

11

Rails 4.0.3, Ruby 2.1.0p0 -> bu benim için çalıştı =>

<%= form_for(@contact, :html => {:class => 'form_height'}) do |f| %><% if     @contact.errors.any? %>

4

Aynı sorunu yaşadım ancak uygulamamdaki başka bir formun iyi çalıştığına şaşırdım.

Yanlışlıkla başka bir form_for'un içine bir form_for eklediğimi fark ettim, bu da kaldırıldıktan sonra sorunu çözdü.

İkinci olarak, bu sözdiziminin Rails 4.2'de benim için çalıştığını eklemeliyim:

<%= form_for @type, html: {class: "form-horizontal"} do |f| %>

Buradaki diğer cevapların noktalama işaretlerine tercih edilebilir buluyorum (belki de daha eski bir Rails versiyonuna dayanıyordu).


1

Çoğunlukla yardımcılarda, son argüman, öğe için html seçeneklerinin bir karmasıdır.

= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>

Ayrıca ActionsView :: Helpers :: FormHelper belgelerinde diğer alternatifleri de kontrol edebilirsiniz.


1

Yukarıdakileri şanssız denedim ama bir çözüm buldum. 4.1.6 rayları kullanıyorum.

Bu işe yaramadı

= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>

Bu yaptı

= form_for @user, html: {:class => 'x', 'data-bar' => 'baz'} %>

html seçeneğindeki farkı görün, umarım bu yardımcı olur


3
Vay gerçekten mi? bunlar tam olarak eşdeğer olmalıdır. Bunu yeniden üretebilir misin? Ruby'nin hangi sürümünü kullanıyorsunuz?
Alan H.

@Alan H. Ruby'yi Kullanmak 2.1.3p242 Kodumun = form_for(:user, :url => login_path, html: {:class => 'login_form'}) do |f| %> sınıfı uygulamasının tek yolu buydu, aksi takdirde onu görmezden geliyordu.
doz87

Bu iki çizgi tamamen aynı. Arada tasarruf etmeyi unuttuğunuzu mu düşünüyorsunuz?
nathanvda

Biliyorum, olmalılar. Benim için sadece işe yaramadı. Sorun kurtarmak değildi.
doz87
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.