2010-01-30 64 views
8

我已经遇到了使用link_to的ror问题。在link_to参数中指定我的“method”=>“post”之后,为什么我的链接使用GET方法和我的button_to使用POST方法?Button_to使用POST Link_to使用GET,为什么? ROR

查看:

<%= 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"} 

回答

11

我觉得你的HTML选项必须在一个单独的哈希从您的网址选项:

<%= link_to 'pdf', {:controller => 'inventories', :action => 'getquote'}, {:method => :post } %> 

我到处寻找一个适当的例子,没有运气。对于我的代码,我大部分放弃了,只是使用了新样式:

<%= link_to 'Delete', custom_event, :confirm => 'Are you sure?', :method => :delete %> 
+0

我与ROR 3.0.17有同样的问题(或18或19,不记得)。我做了这种标记,就像这个“新风格”,它在大多数页面上工作,除了一个特定的页面。电话是完全一样的,我不知道什么是错的。另外萤火虫显示链接有2个数据参数:数据确认和数据方法。这应该是正确的? – 2012-09-05 19:52:54

1

一种可能性是,你禁用了JavaScript,在哪种情况下会回退到GET。

+1

启用JavaScript。 – 2010-01-30 20:29:30

6

可能是谁正在访问:)

默认情况下是有用的人,button_to只执行POST操作。

做使得到语法如下:

<%= button_to 'pdf', { :action => 'getquote'}, :method => :get %> 
+1

可以工作,但只有当您将':get'作为符号或小写'“get”'时才会生效。字符串''GET“'不起作用。只是一个小问题。 – Gunchars 2013-11-15 21:04:15

+3

当我这样做时,它添加一个问号“?”到我的URL的末尾。任何人看到这个或有修复? – 2014-02-24 05:18:05

+1

@TrevorMcKendrick可能是这个有用http://stackoverflow.com/a/8122116/1297435 – 2016-08-22 02:51:30

相关问题