form_for와 form_tag의 차이점은 무엇입니까? form_remote_for와 form_remote_tag가 다른가요?
답변
특정 모델에는 form_for를 사용합니다.
<% form_for @person do |f| %> # you can use f here
First name: <%= f.text_field :first_name %>
Last name : <%= f.text_field :last_name %>
<% end %>
Form_tag 기본 양식 생성,
<%= form_tag '/person' do -%>
<%= text_field_tag "person", "first_name" %>
<% end -%>
답변
form_for
첫 번째 인수로 activerecord 객체를 선호합니다. 양식을 쉽게 만들거나 편집 할 수 있습니다 ( “새”보기에서 사용하려면 다음과 같이 컨트롤러에서 빈 인스턴스를 만들어야합니다.
def new
@foo = Foo.new
end
또한 양식 변수를 블록에 전달하므로 양식 자체 내에서 모델 이름을 반복 할 필요가 없습니다. 모델 관련 양식을 작성하는 데 선호되는 방법입니다.
form_tag
단지 form 태그를 생성합니다 (물론, 같은 위조 방지 숨겨진 필드를 조용히 준비합니다 form_for
). 모델이 아닌 양식에 가장 적합합니다 (실제로는 단순한 검색 양식 등에 대해서만 사용합니다).
이와 유사하게, form_remote_for
그리고 form_remote_tag
대신에 표준 HTTP 메소드로 끝나는의 모델 관련 서식에 적합 각각 관련 형태를 모델링하지 만 (GET은 POST는 …) 그들은 아약스 메서드를 호출합니다.
이 모든 것과 훨씬 더 많은 것을 FormHelper 에서 즐길 수 있습니다. 및 PrototypeHelper 참조 페이지.
2012-07-13 수정
Prototype
rails
오래 전에 제거되었으며 원격 양식이 완전히 변경되었습니다. 및 :remote
둘 다 옵션에 대한 재 가드와 함께 첫 번째 링크를 참조하십시오 .form_for
form_tag
답변
다음과 유사해야합니다.
<% form_for @person do |f| %>
<%= f.text_field :name %>
<% end %>
과:
<%= form_tag '/person' do %>
<%= text_field_tag "person[name]" %>
<% end %>
컨트롤러에 동일한 매개 변수를 제출하려면이를 명시 적으로 정의해야합니다.