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

时间:2009-12-27 12:00:15

标签: ruby-on-rails debugging

我有这个方法将值发布到“/ 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>

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

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

<% end %>

但是我收到了这个错误: StoreController中的ActionController :: InvalidAuthenticityToken#add_to_cart

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

1 个答案:

答案 0 :(得分:9)

您没有使用rails form_for helper来生成<form> HTML标记,此方法除了添加用于防止CSRF攻击的隐藏输入字段外,还会执行此操作。

您有三种选择:

  1. 使用form_for,form_tag ... helper
  2. 自己加入hidden input
  3. Disable the CSRF支持