রেলগুলি সরল_রফর্ম - লুকানো ক্ষেত্র - তৈরি?


174

আপনি কীভাবে সহজ ফর্ম সহ গোপন ক্ষেত্র রাখতে পারেন?

নিম্নলিখিত কোড:

= simple_form_for @movie do |f|
  = f.hidden :title, "some value"
  = f.button :submit

এই ত্রুটির ফলাফল:

undefined method `hidden' for #SimpleForm::FormBuilder:0x000001042b7cd0

উত্তর:


309

এটা চেষ্টা কর

= f.input :title, :as => :hidden, :input_html => { :value => "some value" }

8
ধন্যবাদ, যে কাজ করেছে। = f.input :title, :as => :hidden, :input_html => { :value => "some value" }
লিনাস অ্যালিয়েন্ডার

5
এটি simple_formলুকানো ইনপুটগুলি করার উপায়, তবে, যদি কেবল কোনও লুকানো ইনপুট প্রয়োজন হয়, তবে কেবল রেলগুলির hidden_fieldফর্ম বিল্ডারটি ব্যবহার করুন যেহেতু সরল ফর্ম সমস্ত ফর্ম বিল্ডার পদ্ধতির উত্তরাধিকার সূত্রে প্রাপ্ত হয়।
স্কার্ভার

281

সবচেয়ে ছোট !!!

=f.hidden_field :title, :value => "some value"

সংক্ষিপ্ত, DRYer এবং সম্ভবত আরও সুস্পষ্ট।

অবশ্যই রুবি 1.9 এবং নতুন হ্যাশ ফর্ম্যাট সহ আমরা 3 টি অক্ষর আরও সংক্ষিপ্ত যেতে পারি ...

=f.hidden_field :title, value: "some value"

1
অথবা <% = f.hmitted_field: টার্ম_আইডি, মান => @
লেনদেন.এটারম_আইডি

2
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। যদিও প্রশ্নটি সাধারণ ফর্ম সম্পর্কে জিজ্ঞাসা করা হয়েছিল, এটি যখন সংক্ষিপ্ত বাক্য গঠন দ্বারা সঠিক একই জিনিসটি সম্পাদন করে তখন এটি ব্যবহার করার কোনও কারণ নেই।
গ্রেগ ব্লাস

5
= f.input_field :title, as: :hidden, value: "some value"

এছাড়াও একটি বিকল্প। তবে নোট করুন, এটি আপনার ফর্ম বিল্ডারের জন্য নির্ধারিত কোনও মোড়ক এড়িয়ে চলে।


5

সঠিক উপায় (আপনি যদি লুকানো_ফিল্ড ইনপুটটির মান পুনরায় সেট করার চেষ্টা না করেন) হ'ল:

f.hidden_field :method, :value => value_of_the_hidden_field_as_it_comes_through_in_your_form

কোথায় :method সেই পদ্ধতিটি যখন অবজেক্টটিতে ডাকা হয় তার ফলশ্রুতিতে আপনি চান মানটি ফলাফল করে

সুতরাং উপরের উদাহরণ অনুসরণ:

= simple_form_for @movie do |f|
  = f.hidden :title, "some value"
  = f.button :submit

উদাহরণে ব্যবহৃত কোডটি @ মোভির ফর্মটি দিয়ে যাবার মান (: শিরোনাম) পুনরায় সেট করবে। আপনার যদি কোনও সিনেমার পুনরায় সেট করার পরিবর্তে মান (: শিরোনাম) অ্যাক্সেসের প্রয়োজন হয় তবে এটি করুন:

= simple_form_for @movie do |f|
  = f.hidden :title, :value => params[:movie][:title]
  = f.button :submit

আবার কেবলমাত্র আমার উত্তরটি ব্যবহার করুন আপনি ব্যবহারকারীর দ্বারা জমা দেওয়া মানটি পুনরায় সেট করতে চান না।

আশা করি এটা বোধ গম্য।


1
কারণ simple_form_for, hiddenএখানে ব্যবহারের পদ্ধতিটি undefined method # <সিম্পলফর্ম :: ফর্মবিল্ডার: 0x00007ffa6cde0be8>
for
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.