隐藏请求参数和简单的GET请求

时间:2011-03-21 07:14:44

标签: ruby-on-rails http request

有文章和标签模型。

要查找与特定标记相关联的文章,用户点击链接,然后点击“/ articles?tags = iPhone”网址。

除了“tags”参数之外,我还需要将另一个参数传递给服务器,比如说“hiddenParam”,不应该出现在地址栏中

因此,用户应在地址栏中看到“/ articles?tags = iPhone”,并且还应在请求正文中提供额外的“hiddenParam”。

这是否可行,在Rails中使用标准的ActionView助手?

2 个答案:

答案 0 :(得分:1)

您应该发送一个POST请求,其中包含您不希望在URL栏中查看的变量,但请设置请求路径以包含您想要查看的参数。

curl请求示例如下:

curl "http://localhost:3000/articles?tags=iPhone" --data "secret=sssssh" -X POST

然后在您的控制器中,两个参数都应该可用。

但是,请记住,该页面在当前状态下不会是可收藏/可链接的。您可能真的想加密或散列隐藏参数并通过get传递它,如果您确实需要除了当前用户之外的任何人都可以使用该URL。

PS。为什么你的路由不是/ tags /:id?

答案 1 :(得分:1)

如果你真的必须,试试这个:

<%= form_tag('articles/?tags=iPhone', :method => "post") do %>
  <%= hidden_field_tag(:hiddenParam, "mySecret") %>
  <%= submit_tag("Browse articles") %>
<% end %>

然后使用CSS样式使您的按钮显示/看起来像一个链接。 但请记住,这对搜索引擎无效。