[ruby-on-rails] Rails hidden field undefined method ‘병합’오류

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

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

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

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

undefined method `merge' for "test":String

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



답변

해야 할 일 :

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

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


답변

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


답변

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

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


답변

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

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


답변

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

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


답변

그건 그렇고, 숨겨진 필드를 사용하여 서버에서 브라우저로 데이터를 보내지 않습니다. 데이터 속성 은 훌륭합니다. 넌 할 수있어

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

그런 다음 jquery로 속성 값을 가져옵니다.

$('form').data('service')


답변