我正在阅读表单助手的指南 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
页面来自入门指南(
当我提交请求时,服务器抛出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 视图中开发表单的正确方法吗?
一般来说,是的。
"Rails way"会让你把它重写为:
<%= form_for Post.new do |f| %>
<%= f.label :title, "Test" %>
<%= f.input :title %>
<%= f.submit %>
<% end %>
你尝试使用直接HTML标签被Rails在其所有非GET请求上使用的CSRF保护所阻止。您必须使用 Rails 表单标记或删除 CSRF 保护以避免该错误。