【问题标题】:rails check if url ends with numberrails 检查 url 是否以数字结尾
【发布时间】: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


【解决方案1】:
检查这个例子

url = "http://www.example.com/articles?page=2"

def last_element_for_url(url)
  if /[0-9]/.match(a[a.length-1]).to_a.length > 0
    true
  else
    false
  end
end

对于rails,我们可以设置 url = request.original_url ,那么上面的方法会根据url返回true或者false。

【讨论】:

    猜你喜欢
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2013-03-21
    相关资源
    最近更新 更多