Ruby on rails 我如何隐藏传递给方法的参数(比如表单_)?

Ruby on rails 我如何隐藏传递给方法的参数(比如表单_)?,ruby-on-rails,url,hide,params,Ruby On Rails,Url,Hide,Params,我已经搜索了几个小时了,没有找到任何有用的东西 我想做的是: 我需要调用check\u login-方法(如下),该方法需要参数 redirect_to check_login_users_url( :user => {:name => input[1], :password => input [2] }, :stylesheet => 'scaffold', :method => :get) 关键是这些参数在方法调用中发送,如下面的“重定向到”行所示

我已经搜索了几个小时了,没有找到任何有用的东西

我想做的是: 我需要调用
check\u login
-方法(如下),该方法需要参数

redirect_to check_login_users_url(
  :user => {:name => input[1], :password => input [2] },
  :stylesheet => 'scaffold',
  :method => :get)
关键是这些参数在方法调用中发送,如下面的“重定向到”行所示

Processing ApplicationController#execute(for 127.0.0.1 at 2009-12-19 00:28:40) [POST]
Parameters: {"command"=>{"line"=>"log dodo wg"}, "authenticity_token"=> <...token>}
Redirected to http://localhost:3000/benutzer/check_login?method=get&stylesheet=scaffold&user%5Bname%5D=dodo&user%5Bpassword%5D=wg
Completed in 9ms (DB: 0) | 302 Found [http://localhost/execute]
Processing ApplicationController#execute(对于127.0.0.1,2009-12-19 00:28:40)[POST]
参数:{“command”=>{“line”=>“log dodo wg”},“authenticity_token”=>}
重定向到http://localhost:3000/benutzer/check_login?method=get&stylesheet=scaffold&user%5Bname%5D=dodo&user%5Bpassword%5D=wg
在9毫秒内完成(分贝:0)|发现302[http://localhost/execute]

我想阻止rails将参数放入url,并将其隐藏传递。

当我为发送用
form\u创建的表单时,url中没有任何内容,因此我认为这一定是可能的

请告诉我怎么做


尝试的步骤
  • 我试过不同的“html动词”:get、put、post-没有区别。虽然
    check_login
    的调用非常短,但我的控制台中显示了带有参数的url
  • 创建一个实例变量并将其作为param传递(奇怪,也不起作用)
  • 查看
    form_查看
    working–没有结果,没有线索


//edith:
谢谢你迄今为止的帮助。也许我没有详细说明我的问题。 我有一个
text\u字段
,我在其中输入短命令(实验性地)。它的表单在
AppController
中调用
execute
,在登录数据的情况下执行
重定向到
检查登录
。我不需要访问网页,我只想运行这个方法。我喜欢把它放进flash中的想法,但我想知道是否有一种“更整洁”的方法来传递隐藏的数据

更换

:method => :get)

:get
:post
之间有什么区别?阅读

替换

:method => :get)


:get
:post
之间有什么区别?使用
form\u阅读,创建表单,然后将表单
发布到服务器,这就是为什么在url中看不到参数-它们在http请求正文中。但不可能将用户浏览器从控制器中的某个操作重定向到另一个
POST
——如果可能的话,我可以将用户重定向到(例如)gmail的电子邮件更改表单或其他表单。您只能将用户重定向到其他站点,然后使用该用户的浏览器
GET
s


如果您确实不想在url中显示参数,并且两个操作都在同一个应用程序中,那么您可以将这些参数存储在
会话
闪存
存储中,并在重定向后的下一个请求中检索。

使用
表单_for
创建表单,然后
发布到服务器,这就是为什么在url中看不到参数——它们在http请求体中。但不可能将用户浏览器从控制器中的某个操作重定向到另一个
POST
——如果可能的话,我可以将用户重定向到(例如)gmail的电子邮件更改表单或其他表单。您只能将用户重定向到其他站点,然后使用该用户的浏览器
GET
s


如果您确实不想在url中显示参数,并且两个操作都在同一个应用程序中,那么您可以将这些参数存储在
会话
闪存
存储中,并在重定向后的下一个请求中检索。

TL;DR版本:使用表单

您永远无法完全隐藏参数,工具可用于监视请求和查看post数据/参数。但是,您可以使用加密会话混淆它。另外,您似乎通过GET请求发送登录信息,这通常是一种不好的做法

也就是说

对您来说,问题在于您没有生成任何带有link_to:method=>:post的post数据。link_to将使用您提供的参数生成url。其中,表单将把表单生成的所有参数作为POST数据发送到表单_中生成的url以供调用

在收到POST请求后,Rails将从URL获取的参数与其接收到的POST数据合并到一个params散列中

如邮寄到

http://localhost:3000/benutzer/check_login?stylesheet=scaffold&user%5Bname%5D=dodo&user%5Bpassword%5D=wg
在接收控制器操作中生成与发送到
http://localhost:3000/benutzer/check_login
包含以下数据:

 stylesheet=scaffold&user[name]=dodo&user[pasword]=wg
这两个请求在服务器日志中没有区别

如果查看form_for正在做什么,它会将从表单输入构建的POST数据提交到参数生成的url

form_for @user, create_user_url(:stylesheet => "scaffold") do |f|
  f.text_field :name
  f.password_field, :password
end
此表单将表单数据提交到由选项生成的url。在本例中,url为:
http://localhost:3000/users/create?stylesheet=scaffold
,表单数据为:

user[name]=name_field_value_at_submit&user[password]=password_field_value_at_submit
链接到将不会为您填充post数据。您必须通过表单或使用javascript来完成。包含一个使用javascript执行此操作的示例。查看destroy with:onclick是如何处理的


如果你真的不喜欢按钮,你可以使用link\u to\u功能提交表单。

TL;DR版本:使用表单

您永远无法完全隐藏参数,工具可用于监视请求和查看post数据/参数。但是,您可以使用加密会话混淆它。另外,您似乎通过GET请求发送登录信息,这通常是一种不好的做法

也就是说

对您来说,问题在于您没有生成任何带有link_to:method=>:post的post数据。link_to将使用您提供的参数生成url。其中,表单将表单生成的所有参数作为POST数据发送到表单中生成的url
$ ->
  $("#button-id").on "click", (ev) ->

  $.ajax
    type: "GET"
    dataType: "html"
    url: "/horoscope_dailies"
    data:
      date: date
    success: (data) ->
      $("#index_content").html data
    error: (object, error) ->
      console.log error
render partial: 'partial_name' if request.xhr?
%div{:id => 'partial_content'} 
  = render 'partial_name'