Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用GET方法的按钮\u_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 使用GET方法的按钮\u

Ruby on rails 使用GET方法的按钮\u,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在使用Rails第四版(Rails 3.2+)进行敏捷Web开发,我对Butto方法有些困惑。这本书以及我做过的所有其他谷歌搜索都说按钮使用POST请求。但是,当我检查页面时,按钮_to似乎使用了GET方法 现在,我可能弄错了,但我来自php背景,POST方法总是意味着数据在没有url的情况下被传递到服务器,并通过阵列服务器端进行访问: $_POST['form_item'] 此外,GET请求意味着通过url传递数据: someurl.com/somepage?DATA=data_val

我正在使用Rails第四版(Rails 3.2+)进行敏捷Web开发,我对Butto方法有些困惑。这本书以及我做过的所有其他谷歌搜索都说按钮使用POST请求。但是,当我检查页面时,按钮_to似乎使用了GET方法

现在,我可能弄错了,但我来自php背景,POST方法总是意味着数据在没有url的情况下被传递到服务器,并通过阵列服务器端进行访问:

$_POST['form_item'] 
此外,GET请求意味着通过url传递数据:

someurl.com/somepage?DATA=data_value
使用此按钮\u编码:

  <%= button_to 'Add to Cart', line_items_path(product_id: product_id) %>

这将成为表单输出:

<form action="/line_items?product_id=4" class="button_to" method="post">
<div>
<input type="submit" value="Add to Cart" />
<input name="authenticity_token" type="hidden" value="vGT1scGqasbQAMxYwofXHCM62MfSyM/pNty69Ep5t38=" />
</div>
</form>


此表单上的操作似乎是通过url传递数据(?product_id=4)。虽然我可以清楚地看到“method='post'”,但这不是一个正在使用的GET吗

默认情况下,它使用POST方法。如果需要获取,只需按以下方式键入:

<%= button_to 'Add to Cart', line_items_path(product_id: product_id), :method => :get %>
:获取%>

您可以检查rails的日志并验证它是否真的是POST请求。

POST请求也可以有查询字符串。问题是,您的
行项目路径
在名为
:product\u id
的路径中没有参数,这就是帮助器将此参数添加到查询字符串的原因。如果您想让它在路径中,请检查您的路由(
rake-routes
),必须有如下内容

POST      /line_items/:product_id(.:format)     line_items

正如FancyDancy所说,即使信息通过URL传递,它仍然是一个post请求。Rails没有区分
$\u GET
$\u POST
。它只有与
$\u请求
参数
等效的值。因此,产品id是通过URL还是通过隐藏的表单字段传递并不重要。在这两种情况下,您都可以通过
params[:product_id]

@misha获得它。谢谢您的澄清。请将您的评论作为回答。