programing

레일 숨겨진 필드 정의되지 않은 메서드 '합병' 오류

css3 2023. 6. 24. 09:28

레일 숨겨진 필드 정의되지 않은 메서드 '합병' 오류

저는 레일에서 이런 것을 하고 싶습니다.

제가 지금까지 가지고 있는 레일은 다음과 같습니다.

<%= 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를 사용하고 있습니다.non_tag 버전을 사용하고 있기 때문에 컨트롤러가 폼을 지원하는 개체에서 해당 속성의 값을 이미 설정한 것으로 가정합니다.예:

컨트롤러:

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

보기:

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

루비 1.9 & 레일 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')

언급URL : https://stackoverflow.com/questions/6636875/rails-hidden-field-undefined-method-merge-error