Rails hidden field undefined method '병합'오류


152

난 레일에서 이런 걸하고 싶어

여기 내가 지금까지 레일에 가지고있는 것입니다 :

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

그러나이 오류가 발생합니다.

undefined method `merge' for "test":String

hidden_field의 값을 레일로 전달하려면 어떻게해야합니까?


64
대답을 받아 주시겠습니까?
apneadiving

답변:


417

해야 할 일 :

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

hidden_field 해시를 두 번째 인수로 예상


9
우리가 <%= hidden_field_tag :service, "test" %>사용하지 않을 때도 쓸 때 그것은 일관 되지 않습니다 form_for |f|...
Augustin Riedinger

55

hidden_field_tag ​​대신 hidden_field를 사용하고 있습니다. 비 _tag 버전을 사용하고 있으므로 컨트롤러가 양식을 지원하는 객체에서 해당 속성의 값을 이미 설정 한 것으로 가정합니다. 예를 들면 다음과 같습니다.

제어 장치:

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

전망:

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

27

Ruby 1.9 및 rails 4에서 잘 작동합니다.

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

3

루비 1.9의 새로운 해시 구문이있는 버전 :

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

2

이것은 Rails 3.2.12에서도 작동합니다.

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