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页面来自入门指南)

当我提交请求时,服务器会抛出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 视图中开发表单的正确方法吗?

4

1 回答 1

2

一般来说,是的。

“Rails way”会让您将其重写为:

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

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

于 2013-10-10T15:33:55.400 回答