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'