是Rails使用表单助手标记的方法吗?

时间:2013-10-10 15:30:06

标签: html ruby-on-rails forms ruby-on-rails-4

我正在阅读关于表单助手http://guides.rubyonrails.org/form_helpers.html的指南,但我不确定我是否真的需要以这种方式编写我的网页..

我有一个用new.html.erb

写的HTML表单
<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 %>

现在我有相同的表格,除了服务器现在接受请求。

表单助手是否是在Rails视图中开发表单的正确方法?

1 个答案:

答案 0 :(得分:2)

一般来说,是的。

“Rails方式”会让你重写为:

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

Rails在其所有非GET请求中使用的CSRF保护阻止了您尝试使用直接HTML标记。您必须使用Rails表单标记或删除CSRF保护以避免该错误。