রেলগুলি লুকানো ক্ষেত্রের অপরিজ্ঞাত পদ্ধতি 'মার্জ' ত্রুটি


152

আমি রেলপথে এ জাতীয় কিছু করতে চাই

আমার এখন পর্যন্ত রেলপথে যা আছে তা এখানে:

<%= form_for @order do |f| %>
  <%= f.hidden_field :service, "test" %>
  <%= f.submit %>
<% end %>

তবে আমি এই ত্রুটিটি পেয়েছি:

undefined method `merge' for "test":String

আমি কীভাবে রেলপথে আমার লুকানো_ফিল্ডে মানগুলি পাস করতে পারি?


64
আপনি একটি উত্তর গ্রহণ করবেন?

উত্তর:


417

আপনাকে যা করতে হবে:

<%= f.hidden_field :service, :value => "test" %>

hidden_field দ্বিতীয় যুক্তি হিসাবে একটি হ্যাশ আশা করে


9
এটি ব্যবহার <%= hidden_field_tag :service, "test" %>না করার সময় আমরা যেমন লিখি তেমনি একরকম বেমানান form_for |f|...
অগাস্টিন রিডঞ্জার

55

আপনি একটি লুকানো_ফিল্ড_ট্যাগের পরিবর্তে একটি লুকানো_ফিল্ড ব্যবহার করছেন। যেহেতু আপনি অ-ট্যাগ সংস্করণটি ব্যবহার করছেন, তাই ধারণা করা হচ্ছে যে আপনার নিয়ামকটি ইতিমধ্যে ফর্মটির ব্যাক করে থাকা অবজেক্টটিতে সেই বৈশিষ্ট্যের মান নির্ধারণ করেছে। উদাহরণ স্বরূপ:

নিয়ামক:

def new
  ...
  @order.service = "test"
  ...
end</pre>

দেখুন:

<%= form_for @order do |f| %>
  <%= f.hidden_field :service %>
  <%= f.submit %>
<% end %>

27

এটি রুবি 1.9 এবং রেল 4 এ সূক্ষ্মভাবে কাজ করে

<%= f.hidden_field :service, value: "test" %>


2

এটি R.২.১২ রেলগুলিতেও কাজ করে:

<%= f.hidden_field :service, :value => "test" %>


0

যাইহোক, আমি সার্ভার থেকে ব্রাউজারে ডেটা প্রেরণের জন্য লুকানো ক্ষেত্রগুলি ব্যবহার করি না। ডেটা বৈশিষ্ট্যগুলি দুর্দান্ত আপনি করতে পারেন

<%= form_for @order, 'data-service' => 'test' do |f| %>

এবং তারপরে jquery সহ অ্যাট্রিবিউট মানটি পান

$('form').data('service')
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.