Rails의 form_for를 사용하지만 <form> 요소에 사용자 정의 클래스, 속성을 설정 하시겠습니까?


91

form_for속성과 같은 '추가'속성을 무시 data-foo하거나 두 번째 인수에서 와 같이 class전달되는 것 같습니다 options.

= form_for @user, {:url => 'foo', :class => 'x', 'data-bar' => 'baz' } do |f|
  # ...

출력은 클래스 나 속성 <form>이없는 태그입니다 .xdata-bar

수정 사항은 무엇입니까?

또는 FormBuilder사용하지 않고 어떻게 인스턴스를 가져올 수 form_for있습니까?

답변:


194

:html해시 사용 :

= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} do |f|

또는

= form_for @user, html: {class: 'x', data: { bar: 'baz' } } do |f|

1
작동하지 않는 것으로 나타났습니다 : = form_for @user, :html => {'class' => 'x'} do |f|. class문자열 대신 기호 여야합니다.
Trantor 리우

11

Rails 4.0.3, Ruby 2.1.0p0-> 이것은 나를 위해 일했습니다 =>

<%= form_for(@contact, :html => {:class => 'form_height'}) do |f| %><% if     @contact.errors.any? %>

4

나는 같은 문제가 있었지만 내 앱의 다른 양식이 제대로 작동하고 있다는 사실에 의아해했습니다.

내가 실수로 추가 한 것을 깨달았다 form_for 다른 내부 form_for 번 문제를 치료 제거.

둘째,이 구문이 Rails 4.2에서 작동한다고 추가해야합니다.

<%= form_for @type, html: {class: "form-horizontal"} do |f| %>

여기에 다른 답변의 구두점 수프 (아마도 이전 Rails 버전을 기반으로 함)보다 선호됩니다.



1

나는 운없이 위의 방법을 시도했지만 해결책을 찾았습니다. 레일 4.1.6을 사용하고 있습니다.

이것은 작동하지 않았다

= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>

이것은

= form_for @user, html: {:class => 'x', 'data-bar' => 'baz'} %>

html 옵션과의 차이점을 확인하십시오.


3
오 정말? 그것들은 정확히 동일해야합니다. 이것을 재현 할 수 있습니까? 어떤 버전의 Ruby를 사용하고 있습니까?
Alan H.

@Alan H. Using Ruby 2.1.3p242 = form_for(:user, :url => login_path, html: {:class => 'login_form'}) do |f| %> 이것은 내 코드가 클래스를 적용하는 유일한 방법이었습니다. 그렇지 않으면 그냥 무시하는 것입니다.
doz87 2014 년

이 두 줄은 정확히 동일합니다. 중간에 저장하는 것을 잊었나요?
nathanvda

나는 그들이 그래야한다는 것을 안다. 나를 위해 그것은 작동하지 않았습니다. 저축은 문제가 아니 었습니다.
doz87
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.