如何在Ruby on Rails中获得当前的绝对URL?
如何在Ruby on Rails视图中获取当前的绝对URL ?
request.request_uri
仅返回相对URL。
#1楼
url_for(params)
您可以轻松添加一些新参数:
url_for(params.merge(:tag => "lol"))
#2楼
这适用于Ruby on Rails 3.0,并且大多数版本的Ruby on Rails都应支持:
request.env['REQUEST_URI']
#3楼
(url_for(:only_path => false) == "/" )? root_url : url_for(:only_path => false)
#4楼
除了有人说他使用调试器找到他所寻找的内容之外,该线程中的所有建议都没有对我产生可悲的帮助。
我创建了一些自定义错误页面,而不是标准的404和500,但是request.url
以/404
结尾,而不是预期的/non-existing-mumbo-jumbo
。
我需要使用的是
request.original_url
#5楼
使用Ruby 1.9.3-p194和Ruby on Rails 3.2.6:
如果request.fullpath不适用于您,请尝试request.env [“ HTTP_REFERER”]
这是我下面的故事。
在检测当前URL(在用户浏览器的地址栏中显示)中的累积页面时,我遇到了类似的问题,该页面合并了来自不同控制器(例如http://localhost:3002/users/1/history/issues
。
用户可以切换到不同类型的问题列表。 所有这些列表都是通过Ajax从不同的控制器/部分加载的(无需重新加载)。
问题是在列表的每个项目中为后退按钮设置正确的路径,以便后退按钮可以在其自己的页面和累积页面历史记录中正常工作 。
如果我使用request.fullpath ,它将返回上一个JavaScript请求的路径,这绝对不是我要查找的URL。
因此,我使用了request.env [“ HTTP_REFERER”]来存储上次重新加载的请求的URL。
这是部分决定的摘录
- if request.env["HTTP_REFERER"].to_s.scan("history").length > 0- back_url = user_history_issue_path(@user, list: "needed_type")
- else- back_url = user_needed_type_issue_path(@user)
- remote ||= false
=link_to t("static.back"), back_url, :remote => remote
#6楼
要获取绝对网址,这意味着可以from the root
显示,如下所示
<%= link_to 'Edit', edit_user_url(user) %>
users_url帮助程序将生成一个包含协议和主机名的URL。 users_path帮助器仅生成路径部分。
users_url: http://localhost/users
users_path: /users
#7楼
如果您想表达具体的意思,就知道需要的路径:
link_to current_path(@resource, :only_path => false), current_path(@resource)
#8楼
在Rails 3中,您可以使用
request.original_url
http://apidock.com/rails/v3.2.8/ActionDispatch/Request/original_url
#9楼
如果您使用的是Rails 3.2或Rails 4 ,则应使用request.original_url
获取当前URL。
该方法的文档位于http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-original_url,但如果您感到好奇,则可以执行以下操作:
def original_urlbase_url + original_fullpath
end
#10楼
您可以使用ruby方法:
:root_url
这将获得带有基本URL的完整路径:
localhost:3000/bla
#11楼
对于导轨3:
request.fullpath
#12楼
如果相对而言,您的意思是没有域,那么请查看request.domain
。
#13楼
对于Rails 3.2或Rails 4+
您应该使用request.original_url
来获取当前URL。
该方法记录在original_url方法中 ,但是如果您很好奇,则实现为:
def original_urlbase_url + original_fullpath
end
对于Rails 3:
您可以编写"#{request.protocol}#{request.host_with_port}#{request.fullpath}"
,因为request.url
现在已弃用。
对于Rails 2:
您可以编写request.url
而不是request.request_uri
。 这将协议(通常为http://)与主机以及request_uri结合在一起,以提供完整的地址。
#14楼
我认为request.domain可以工作,但是如果您位于blah.blah.com之类的子目录中怎么办? 这样的事情可能会起作用:
<%= request.env["HTTP_HOST"] + page = "/" + request.path_parameters['controller'] + "/" + request.path_parameters['action'] %>
根据您的路径结构更改参数。
希望有帮助!
#15楼
request.env["REQUEST_URI"]
可以在Rails 2.3.4上进行测试,并且不了解其他版本。
#16楼
您可以将任何一个用于rails 3.2:
request.original_url
or
request.env["HTTP_REFERER"]
or
request.env['REQUEST_URI']
我认为它可以在任何地方使用
"#{request.protocol}#{request.host}:#{request.port}#{request.fullpath}"
#17楼
Rails 4.0
您可以使用request.original_url
,输出将如以下示例所示
get "/articles?page=2"request.original_url # => "http://www.example.com/articles?page=2"
#18楼
获取没有任何查询参数的请求URL。
def current_url_without_parametersrequest.base_url + request.path
end
#19楼
您可以使用:
request.full_path
要么
request.url
希望它能解决您的问题。
干杯
#20楼
您可以使用
request.original_url
要么
"#{request.protocol}#{request.host_with_port}"
获取当前URL。
#21楼
您可以将变量设置为URI.parse(current_url)
,我在这里还没有看到这个建议,它对我URI.parse(current_url)
。
#22楼
您可以在ApplicationController中添加此current_url方法以返回当前URL并允许合并其他参数
# https://x.com/y/1?page=1
# + current_url( :page => 3 )
# = https://x.com/y/1?page=3
def current_url(overwrite={})url_for :only_path => false, :params => params.merge(overwrite)
end
用法示例:
current_url --> http://...
current_url(:page=>4) --> http://...&page=4
#23楼
对于Rails 3.2或Rails 4,只需采用这种方式即可获得“ request.original_url”参考: 原始URL方法
对于Rails 3,因为request.url已被弃用。我们可以通过级联获得绝对路径
"#{request.protocol}#{request.host_with_port}#{request.fullpath}"
对于Rails 2
request.url
#24楼
弃用警告:不建议使用#request_uri 。 请改用fullpath。
#25楼
我认为Ruby on Rails 3.0方法现在是request.fullpath
。
#26楼
看起来request_uri
在Ruby on Rails 3中已弃用。
Using #request_uri is deprecated. Use fullpath instead.
#27楼
在Ruby on Rails 3.1.0.rc4中:
request.fullpath
#28楼
对于Ruby on Rails 3:
request.url
request.host_with_port
我启动了一个调试器会话并查询了请求对象:
request.public_methods
#29楼
您可以使用url_for(only_path: false)
#30楼
我需要应用程序URL,但需要有子目录。 我用了:
root_url(:only_path => false)
如何在Ruby on Rails中获得当前的绝对URL?相关推荐
- ruby on rails_如何在Ruby on Rails应用中用Vue.js替换jQuery
ruby on rails by Igor Petrov 通过伊戈尔·彼得罗夫(Igor Petrov) 如何在Ruby on Rails应用中用Vue.js替换jQuery (How to repl ...
- 在Ruby on Rails中对nil v。空v。空白的简要解释
我发现自己一再寻找nil?差异的明确定义nil? , blank? , empty? 在Ruby on Rails中. 这是我最接近的: blank? 对象是false,空或空白字符串. 例如, &q ...
- 如何在Ruby on Rails迁移中重命名数据库列?
我错误地将列命名为hased_password而不是hashed_password . 如何使用迁移重命名此列来更新数据库架构? #1楼 如果当前数据对您不重要,您可以使用以下方法删除原始迁移: ra ...
- ruby on rails 中使用boot strap(先存起来,还没试过)
1.首先安装 gem 'twitter-bootstrap-rails' ,运行bundle install 2.初始化 rails generate bootstrap:install less ...
- 如何在Ruby中编写switch语句
如何在Ruby中编写switch语句? #1楼 案例...当 在Chuck的答案中添加更多示例: 带参数: case a when 1puts "Single value" whe ...
- 新手安装ruby on rails(ror)的成功必备手册
2019独角兽企业重金招聘Python工程师标准>>> 如何快速正确的安装 Ruby, Rails 运行环境 每一位使用windows系统来进行ROR开发项目的都是这个世界上折翼的天 ...
- react前端项目_如何使用React前端设置Ruby on Rails项目
react前端项目 The author selected the Electronic Frontier Foundation to receive a donation as part of th ...
- Ruby on Rails 终极部署方案 nginx+mina+puma
搭建工具介绍 Ruby on Rails作为一款十分优秀的web开发框架,在当前web领域中慢慢占据了越来越重要,秉承rails快速开发的特点,很多快速部署rails的方案也越来越多.这篇文章中所选的 ...
- 如何从Hash中删除一个键并获取Ruby / Rails中的剩余哈希?
要向Hash添加新对,我会: {:a => 1, :b => 2}.merge!({:c => 3}) #=> {:a => 1, :b => 2, :c => ...
最新文章
- Discuz!X2论坛 “在线时间”更新问题
- java---实现闹钟的基本功能
- key位置 win10生成的ssh_华为路由器配置SSH远程登录,就这么简单
- python 网络设备管理软件_一个查看网络设备信息Python小程序
- 灰度图的width和widthstep的区别
- AppTheme 属性详解
- 网络监控工具--ntop
- ibatis动态的传入表名、字段名
- [转]深入理解Java之线程池
- 4键电子手表说明书_飞猪II控制台简体中文说明书
- 摘来的去视频网站的广告方法
- Java程序员是如何面试上阿里巴巴,如何拿到年薪50W
- 用CMake编译lua
- div圆角,阴影效果。
- oracle中文chr,Oracle中chr(10) chr(9)和chr(13)用法和意义
- Office Word如何设置页码(MacOS中为例)
- 如何制作CHM帮助文件
- android相册和拍照并裁剪图片大小,Android 拍照并对照片进行裁剪和压缩实例详解...
- unity笔记_四舍六入五成双
- ifconfig 命令详解
热门文章
- [ISSUE]invalid 'cobj' in function 'lua_cocos2dx_EventDispatcher_dispatchCustomEvent'
- 八、IO优化(3)稀疏列
- Java4Android视频笔记
- UML建模与软件开发过程模型
- CA的ITSM产品Unicenter介绍
- CentOS node,npm,cnpm 环境部署
- MySQL数据库基本用法-查询
- 2017-08-16 BEX5下集成FullCalendar
- spring项目部署到resin4中的无法注入问题
- CF-697B	Barnicle与691C	Exponential notation