রেলের 'form_for ব্যবহার করুন তবে কাস্টম ক্লাস, <ফর্ম> উপাদানটিতে অ্যাট্রিবিউট সেট করবেন?


91

form_forকোনও 'অতিরিক্ত' গুণাবলীর মতো data-fooএ্যাট্রিবিউট বা দ্বিতীয় আর্গুমেন্টের classমতো পাস হয়েছে বলে মনে হচ্ছে ignoreoptions

= 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|

4
আমি দেখেছি যে এই কাজ করে না: = 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 @type, html: {class: "form-horizontal"} do |f| %>

আমি এখানে অন্যান্য উত্তরগুলির বিরামচিহ্ন-স্যুপের চেয়ে এটি পছন্দনীয় বলে মনে করি (যা সম্ভবত কোনও পুরানো রেলের সংস্করণের উপর ভিত্তি করে ছিল)।


1

বেশিরভাগ সাহায্যকারীদের ক্ষেত্রে, শেষটিটি উপাদানটির জন্য এইচটিএমএল বিকল্পগুলির একটি হ্যাশ।

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

অ্যাকশনভিউ :: সহায়তাকারী :: ফর্মহেল্পার ডকুমেন্টেশনে আপনি অন্যান্য বিকল্পগুলিও পরীক্ষা করতে পারেন


1

আমি ভাগ্য ছাড়াই উপরোক্ত চেষ্টা করেছিলাম তবে একটি সমাধান পেয়েছি। আমি রেল ব্যবহার করছি 4.1.6।

এটি কাজ করে না

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

এটা করেছে

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

এইচটিএমএল বিকল্পের সাথে পার্থক্যটি লক্ষ্য করুন, আশা করি এটি সাহায্য করবে


4
বাহ, সত্যি? যারা ঠিক সমতুল্য হওয়া উচিত। আপনি এই পুনরুত্পাদন করতে পারেন? আপনি রুবির কোন সংস্করণ ব্যবহার করছেন?
অ্যালান এইচ।

@ অ্যালান এইচ। রুবিকে 2.1.3p242 ব্যবহার করে = form_for(:user, :url => login_path, html: {:class => 'login_form'}) do |f| %> এটিই ছিল আমার কোডটি ক্লাসটি প্রয়োগ করবে, অন্যথায় এটি কেবল এটিকে উপেক্ষা করছে।
ডায়েজ 87

এই দুটি লাইন হুবহু একরকম। অনুমান করছেন আপনি কি মাঝে মাঝে সংরক্ষণ করতে ভুলে গেছেন?
নাথানভদা

আমি জানি, তাদের হওয়া উচিত। আমার জন্য এটি যদিও কাজ করে না। সংরক্ষণের বিষয়টি ছিল না।
ডায়েজ 87
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.