2013-10-10 5 views
1

내가 폼 헬퍼 http://guides.rubyonrails.org/form_helpers.html의 가이드를 읽고있다하지만 난 사실 내 웹 페이지에이 방법을 쓸 필요가 있는지 잘 모르겠어요 ..양식 도우미 마크 업을 사용하는 레일 방식입니까?

나는 HTML 형식 new.html.erb

<form action="/posts" method="post"> 
    <label for="title">Test</label> 
    <input id="title"/> 
    <input type="submit" value="submit"/> 
</form> 

작성과 같은이 posts 페이지가 Getting Started 가이드에서 제공됩니다.

요청을 제출하면 서버에서 ActionController::InvalidAuthenticityToken 예외가 발생합니다.

그래서

<%= form_for :post, url: {action: "create"} do |f| %> 
    <label for="title">Test</label> 
    <input id="title"/> 
    <input type="submit" value="submit"/> 
<% end %> 

로 변경하고 서버가 현재 요청을 수락를 제외하고 지금은 같은 형태를 갖는다.

양식 도우미가 레일스 뷰에서 양식을 개발하는 적절한 방법입니까?

+2

네, 그게 그들이있는 곳입니다. form 태그, 입력, 에러 렌더링, 모든 것에 사용하십시오. http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html – sevenseacat

+0

누구나 이미 사용 방법을 언급했으며 CSRF와 관련이 있습니다. 것은, 당신 * 같은 양식을 가지지 않을 것입니다. 'form_for'를 사용하면 HTML을 검사 할 때 숨겨진 입력 내용이있는 양식 선언 아래에 div가 표시되며, 그 중 하나는 필요한 'authenticity_token'을위한 것입니다. – MrDanA

답변

2

일반적으로 그렇습니다.

"레일 방식"당신 같은이 다시 것 : 레일이 아닌 GET 요청을 모두에 사용하는 CSRF 보호 방지 된 직선 HTML 태그를 사용하는

<%= form_for Post.new do |f| %> 
    <%= f.label :title, "Test" %> 
    <%= f.input :title %> 
    <%= f.submit %> 
<% end %> 

귀하의 시도. 이 오류를 피하려면 Rails 양식 태그를 사용하거나 CSRF 보호를 제거해야합니다.

+4

및 CSRF 보호를 제거하는 것은 ** 권장하지 않습니다 **. – sevenseacat

관련 문제