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.