2012-10-30 2 views
68

form_fordata-foo विशेषता या class जैसे किसी अन्य 'अतिरिक्त' विशेषताओं को अनदेखा करता है, जो इसके दूसरे तर्क में options के रूप में पारित किया गया है।रेल का फॉर्म_for उपयोग करें, लेकिन <form> तत्व पर कस्टम वर्ग, विशेषताओं को सेट करें?

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

उत्पादन नहीं x वर्ग या data-bar विशेषता के साथ एक <form> टैग है।

क्या तय है?

या, मैं form_for का उपयोग किए बिना FormBuilder उदाहरण कैसे प्राप्त कर सकता हूं?

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

या

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

उत्तर

155

:html हैश का उपयोग करें।

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

तुम भी दस्तावेज में अन्य विकल्पों की जांच कर सकते ActionsView::Helpers::FormHelper

+1

मैंने पाया कि यह काम नहीं करता है: '= form_for @user,: html => {'class' => 'x'} do | f |'। 'कक्षा' स्ट्रिंग के बजाय प्रतीक होना चाहिए। –

1

ज्यादातर सहायकों पर, पिछले आर्ग तत्व के लिए एचटीएमएल विकल्पों में से एक हैश है:

+0

ओपीएस, उत्तर संपादित किया! – felipeclopes

10

रेल 4.0.3, रूबी 2.1.0p0 -> यह मेरे =>

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

के लिए काम किया मैं के साथ ऊपर की कोशिश की कोई भाग्य नहीं मिला लेकिन एक समाधान मिला। मैं रेल 4.1.6 का उपयोग कर रहा हूँ।

यह

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

यह किया

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

नोटिस एचटीएमएल विकल्प के साथ अंतर काम नहीं किया, उम्मीद है कि इस मदद करता है

+2

वाह, वास्तव में? वे बिल्कुल बराबर होना चाहिए। आप इसे पुन: पेश कर सकते हैं? रूबी का कौन सा संस्करण आप उपयोग कर रहे हैं? –

+0

@ आलान एच। रुबी 2.1 का उपयोग करना।3p242 '= form_for (: उपयोगकर्ता,: url => login_path, html: {: class => 'login_form'}) do | f | %> ' यह एकमात्र तरीका था कि मेरा कोड कक्षा लागू करेगा, अन्यथा यह केवल इसे अनदेखा कर रहा था। – doz87

+0

वे दो पंक्तियां बिल्कुल समान हैं। अनुमान है कि आप बीच में सहेजना भूल गए हैं? – nathanvda

4

मैं एक ही समस्या थी लेकिन एक और है कि हैरान था मेरे ऐप में कहीं और फॉर्म ठीक काम कर रहा था।

मुझे एहसास हुआ कि मैं गलती से एक form_for एक और अंदर जो एक बार समस्या ठीक हो हटाया form_for जोड़े थे।

दूसरे, मैं जोड़ने चाहिए रेल 4.2 में है कि इस वाक्य रचना मेरे लिए काम करता है:

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

मुझे लगता है यह अन्य उत्तर यहाँ से विराम चिह्न-सूप (जो शायद एक पुराने रेल संस्करण पर आधारित थे के लिए बेहतर)।

संबंधित मुद्दे