रेल के form_for का उपयोग करें, लेकिन कस्टम वर्गों, विशेषताओं को <form> तत्व पर सेट करें?


91

form_forकिसी भी 'अतिरिक्त' विशेषताओं को अनदेखा करने के लिए एक data-fooविशेषता की तरह लगता है या इसके दूसरे तर्क के classरूप optionsमें पारित किया जाता है।

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

आउटपुट एक <form>टैग है जिसमें कोई xवर्ग या data-barविशेषता नहीं है।

ठीक क्या है?

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

जवाबों:


194

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

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

या

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

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

11

रेल्स 4.0.3, रूबी 2.1.0p0 -> इसने मेरे लिए काम किया =>

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

4

मुझे भी यही समस्या थी, लेकिन मुझे आश्चर्य हुआ कि मेरे ऐप में कहीं और एक और रूप ठीक काम कर रहा था।

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

दूसरी बात, मुझे यह जोड़ना चाहिए कि यह वाक्य रचना मेरे लिए ४.३ में काम करती है:

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

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



1

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

यह काम नहीं किया

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

इसने किया

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

HTML विकल्प के साथ अंतर पर ध्यान दें, आशा है कि यह मदद करता है


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

@Alan H. रूबी 2.1.3p242 का उपयोग करना = form_for(:user, :url => login_path, html: {:class => 'login_form'}) do |f| %> यह एकमात्र तरीका था कि मेरा कोड कक्षा को लागू करेगा, अन्यथा यह इसे अनदेखा कर रहा था।
दर्जनों87

वे दो रेखाएं बिल्कुल समान हैं। लगता है कि आप बीच में बचाने के लिए भूल गए?
नथ्नवाड़ा

मुझे पता है, उन्हें होना चाहिए। मेरे लिए यह अभी काम नहीं कर रहा था। बचत मुद्दा नहीं था।
११
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.