2009-12-27 61 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) –

相關問題