2015-09-06 213 views
0

軌道4 button_toRails的button_to發送GET查詢,而不是後

<%= button_to 'Send', {:controller => "feedback", :action => "send_feedback"}, class: "btn btn-success pull-right" %> 

在我看到的API文檔,對於button_to默認行爲是發送POST查詢,但在日誌中:

Started GET "/?name=%D0%98%D0%B3%D0%BE%D1%80%D1%8C&email=silend%40inbox.ru&text=ghfhfg&authenticity_token=MbPeULaBSsjRmf1415AUfwQOLl5%2FkpOUzbOyJnBRMXa7%2Fgi6yyoTn8kSsVR3sFEkVxMH%2FN%2FfDEFfwWpN%2Bjc5NA%3D%3D" 

在routes.rb:

post "feedback/send_feedback" => "feedback#send_feedback" 

一切工作正常,當我在瀏覽器中的結果html中添加「formmethod = post」,但如何改變它與鐵路?

回答

0

問題是與形式,而不是button_to助手。 我在表單標籤寫路徑我的控制器/動作與方法:

<%= form_tag("/feedback/send_feedback", method: "post", class: "form-horizontal") do %> 

和變化button_to到submit_tag

<%= submit_tag "Отправить", class: "btn btn-success pull-right" %> 

而現在它的工作原理

1

你應該設置使用的方法:

<%= button_to 'Send', {controller: "feedback", action: "send_feedback"}, method: :post, class: "btn btn-success pull-right" %> 

看到文檔here

對於例如:產生

<%= button_to 'Save', {controller: "links", action: "create"}, method: :post, class: "btn btn-success pull-right" %> 

驗證碼:

<form class="button_to" action="/links" method="post"> 
<input class="btn btn-success pull-right" type="submit" value="Save"> 
<input type="hidden" value="kT0h/RaXsLfOGouIYKS6Td767VF1+q72GFl6XIIwzcbd+/Au/7gvTeGRf5ajMMV9Ds3PO7U5bF4/O5zKgJWzqQ==" name="authenticity_token"> 
</form> 

也使用新的哈希sintaxe,請參閱What are the benefits of the new hash syntax in Ruby 1.9?

+0

謝謝你的回答,但與方法:後語法錯誤,方法:「後」 - 仍然是GET查詢。還試圖使用舊的語法,如:方法=>:發佈仍然相同 –

+0

錯誤與建議的語法是 - ActionView :: Template :: Error(未定義局部變量或方法'後'爲#<#:0x007fc7d2bdbdd8 >) –

+0

@TorryAshwood我不明白,把'post'改爲':post'。我編輯了答案。 –

相關問題