form_for
tampaknya mengabaikan atribut 'ekstra' seperti data-foo
atribut atau class
diteruskan seperti options
pada argumen kedua.
= form_for @user, {:url => 'foo', :class => 'x', 'data-bar' => 'baz' } do |f|
# ...
Keluarannya adalah <form>
tag tanpa x
kelas atau data-bar
atribut.
Apa perbaikannya?
Atau, bagaimana cara mengambil FormBuilder
instance tanpa menggunakan form_for
?
ruby-on-rails
ruby-on-rails-3
Alan H.
sumber
sumber
= form_for @user, :html => {'class' => 'x'} do |f|
.class
harus menjadi simbol, bukan string.Rails 4.0.3, Ruby 2.1.0p0 -> ini berhasil untuk saya =>
<%= form_for(@contact, :html => {:class => 'form_height'}) do |f| %><% if @contact.errors.any? %>
sumber
Saya memiliki masalah yang sama tetapi bingung karena formulir lain di tempat lain di aplikasi saya berfungsi dengan baik.
Saya menyadari bahwa saya tidak sengaja menambahkan form_for di dalam form_for lain yang pernah menghapusnya, menyembuhkan masalah.
Kedua, saya harus menambahkan bahwa sintaks ini berfungsi untuk saya di Rails 4.2:
<%= form_for @type, html: {class: "form-horizontal"} do |f| %>
Saya merasa lebih baik daripada sup tanda baca dari jawaban lain di sini (yang mungkin didasarkan pada versi Rails yang lebih lama).
sumber
Pada kebanyakan helper, argumen terakhir adalah hash opsi html untuk elemen tersebut.
= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>
Anda juga dapat memeriksa alternatif lain dalam dokumentasi ActionsView :: Helpers :: FormHelper
sumber
Saya mencoba cara di atas tetapi tidak berhasil tetapi menemukan solusinya. Saya menggunakan rel 4.1.6.
Ini tidak berhasil
= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>
Ini berhasil
= form_for @user, html: {:class => 'x', 'data-bar' => 'baz'} %>
perhatikan perbedaannya dengan opsi html, semoga ini membantu
sumber
= form_for(:user, :url => login_path, html: {:class => 'login_form'}) do |f| %>
Ini adalah satu-satunya cara kode saya akan menerapkan kelas, jika tidak maka akan diabaikan saja.