为什么我不能在RoR中发送post方法?

DNB*_*ims 0 debugging ruby-on-rails

我有这个方法将值发布到"/ store/add_to_cart"

<form action = "/store/add_to_cart" method="post">
<% for product in @products -%>
<div class   = "entry">
<%= product.title %>
<%= product.price %>
<p>
</div>
<% end %>
<%= select( "payment", "id", { "Visa" => "1", "Mastercard" => "2"}) %>
<%= submit_tag 'Make Order' %>
</form>
Run Code Online (Sandbox Code Playgroud)

在/store/add_to_cart.html.erb中,我创建了:

<%= params.length %>
<% for i in params%>
<%=i%>
<br/>

<% end %>
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:StoreController中的ActionController :: InvalidAuthenticityToken#add_to_cart

发生了什么?但是在我把它改成get方法之后,我可以得到所有的参数,wt发生了吗?

Zor*_*art 9

您没有使用rails form_forhelper来生成<form>HTML标记,此方法除此之外还要添加一个用于防止CSRF攻击的隐藏输入字段.

你有三个选择:

  1. 使用form_for,form_tag ... helper
  2. 自己包含隐藏的 输入
  3. 禁用 CSRF支持