Html 这是Rails使用表单帮助器标记的方式吗?

Html 这是Rails使用表单帮助器标记的方式吗?,html,ruby-on-rails,forms,ruby-on-rails-4,Html,Ruby On Rails,Forms,Ruby On Rails 4,我正在阅读关于表单助手的指南,但我不确定我是否真的需要这样写我的网页 我用new.HTML.erb <form action="/posts" method="post"> <label for="title">Test</label> <input id="title"/> <input type="submit" value="submit"/> </form> 现在我有了相同的表单,只是服务器现在接受了请

我正在阅读关于表单助手的指南,但我不确定我是否真的需要这样写我的网页

我用
new.HTML.erb

<form action="/posts" method="post">
  <label for="title">Test</label>
  <input id="title"/>
  <input type="submit" value="submit"/>
</form>
现在我有了相同的表单,只是服务器现在接受了请求

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

一般来说,是的

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

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


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

是的,这就是它们的作用所在。将它们用于表单标记、输入、错误呈现等等。每个人都已经提到了应该如何使用它,它与CSRF有关。问题是,你不会有相同的表格。使用
form\u for
,如果您检查HTML,您将看到表单声明下面有一个div,其中包含隐藏的输入,其中一个用于您需要的
authenticity\u令牌
。不建议删除CSRF保护。
<%= form_for Post.new do |f| %>
  <%= f.label :title, "Test" %>
  <%= f.input :title %>
  <%= f.submit %>
<% end %>