wake-up-neo.net

Rails verstecktes Feld undefinierte Methode 'Zusammenführen' Fehler

Ich möchte so etwas in Rails machen

Folgendes habe ich bisher in Rails:

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

Aber dann bekomme ich diesen Fehler:

undefined method `merge' for "test":String

Wie kann ich Werte in meinem hidden_field in Rails übergeben?

150
Jake

Du solltest tun:

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

hidden_field erwartet einen Hash als zweites Argument

412
apneadiving

Sie verwenden ein hidden_field anstelle eines hidden_field_tag. Da Sie die Nicht-_tag-Version verwenden, wird davon ausgegangen, dass Ihr Controller den Wert für dieses Attribut bereits für das Objekt festgelegt hat, das das Formular unterstützt. Beispielsweise:

regler:

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

aussicht:

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

Es funktioniert gut in Ruby 1.9 & Rails 4

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

Eine Version mit der neuen Syntax für Hashes in Ruby 1.9:

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

Dies funktioniert auch in Rails 3.2.12:

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

2
bradmalloy

Übrigens verwende ich keine versteckten Felder, um Daten vom Server zum Browser zu senden. Datenattribute sind fantastisch. Du kannst tun

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

Und dann Attributwert mit jquery erhalten

$('form').data('service')
0
Alex Teut