我使用link_to遇到了一个问题。在我在link_to参数中指定我的“method”=>“post”之后,为什么我的链接使用GET方法而我的button_to使用POST方法?
查看:
<%= button_to "pdf", :action => 'getquote' %>
<%= link_to 'pdf', {:controller => 'inventories', :action => 'getquote', :method => :post } %>
控制器方法:
def getquote
@cart = find_cart
respond_to do |format|
format.pdf
end
end
终端输出(分别为按钮/链接):
Processing InventoriesController#getquote (for 127.0.0.1 at 2010-01-30 01:38:02) [POST]
Parameters: {"action"=>"getquote", "authenticity_token"=>"D2cwnHyTHgomdUM3wXBBXlOe4NQLmv1Srn0paLbExpQ=", "controller"=>"inventories"}
Processing InventoriesController#show (for 127.0.0.1 at 2010-01-30 01:39:07) [GET]
Parameters: {"method"=>"post", "action"=>"show", "id"=>"getquote", "controller"=>"inventories"}
答案 0 :(得分:12)
我认为您的html选项必须与您的网址选项分开显示:
<%= link_to 'pdf', {:controller => 'inventories', :action => 'getquote'}, {:method => :post } %>
我全身心地寻找一个正确的例子,没有运气。对于我的代码,我大多放弃了,只使用新的风格:
<%= link_to 'Delete', custom_event, :confirm => 'Are you sure?', :method => :delete %>
答案 1 :(得分:7)
可能对正在访问的人有用:)
默认情况下,button_to仅执行POST操作。
做一个GET的语法如下:
<%= button_to 'pdf', { :action => 'getquote'}, :method => :get %>
答案 2 :(得分:1)
一种可能性是你禁用了Javascript,在这种情况下它会回退到GET。