2009-12-27 31 views
0

我有这样的方法张贴价值的 “/存储/ add_to_cart”为什么我无法在RoR中发送帖子方法?

<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是否会发生?

+0

是什么在你的routes.rb ? – jonnii

+0

它涉及到routes.rb?在提示任何错误的情况下,我可以在“获取”方法中提交表单。 – DNB5brims

回答

9

您没有使用rails form_for帮助程序生成<form> HTML标记,此外,此方法还会添加一个用于防止CSRF攻击的隐藏输入字段。

你有三个选择:

  1. 使用form_for,...的form_tag帮助
  2. 附上hiddeninput自己
  3. DisabletheCSRF支持
+0

如何将我的代码更改为form_for helper方式? – DNB5brims

+0

类似于: <%form_for controller =>'store',:action => add_to_cart,:html => {:method =>:post} do | f | %> ... <% end %> 但这只是不够干,我会建议你做一个更RESTful的设计,结帐:http://nubyonrails.com/articles/peepcode-rest-basics,http:// ryandaigle.com/articles/2006/08/01/whats-new-in-edge-rails-simply-restful-support-and-how-to-use-it,http://www.b-simple.de/下载/ restful_rails_en.pdf(PDF) –

相关问题