【发布时间】:2017-03-18 19:03:55
【问题描述】:
我正在尝试创建一个在删除人员对象后触发的redirect_to :back。在触发删除目标代码之前,用户可以访问多个页面。如果它们来自person#show 页面,我想重定向到名为admin_persons_path 的路由。如果它们来自任何其他页面,我只想将用户重定向回他们所在的页面。 person#show 页面的 url 结构为 localhost:3000/admin/persons/[some_id_number] 。我正在尝试编写读取引荐来源网址并相应重定向的代码。我正在尝试做类似的事情:
if request.referer.end_with?(some regular expression)
redirect_to :back
else
redirect_to admin_persons_path
end
问题是我不认为end_with?方法可以接受正则表达式,因为当我使用正则表达式尝试时,我得到了错误:
TypeError: no implicit conversion of Regexp into String
如何让它工作?
请注意,使用redirect_back(fallback_location: admin_persons_path) 将不起作用,因为引荐来源在技术上是存在的。如果有一个内置方法可以完成我想要的,我不知道。
【问题讨论】:
-
你可以用'/'分割url,并检查最后一个参数是否为数字。
-
使用类似
if request.referer =~ /regex\z/的东西(或者如果正则表达式是一个变量,/#{regex}\z/) -
问题可能与您的格式一样简单......我无法从您的示例中看出,但正则表达式只是一个正则表达式。但是像 regex.match(url) 这样的东西会返回一个字符串。
-
我什至不确定如何执行正则表达式 - 到目前为止我尝试的一切都失败了。返回一个字符串并没有帮助。 id 想象 id 需要为匹配返回 true 或 false。
-
这个问题有什么不清楚的地方吗?我基本上需要知道如何检查以数字结尾的网址?我很惊讶没有大量的答案。
标签: ruby-on-rails regex ruby-on-rails-3 ruby-on-rails-5 rails-routing