Ruby on rails 如果字符串存在,则在字符前加前缀,否则不加前缀

Ruby on rails 如果字符串存在,则在字符前加前缀,否则不加前缀,ruby-on-rails,ruby,ruby-on-rails-4,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 4,Ruby On Rails 5,如果follow变量有一个值,我想在“/”前面加上前缀,否则如果它是nil,则将其保留为nil l2, follow = params[:all].split('/', 2) follow = follow.nil? ? follow : "/#{follow}" redirect_to "#{my_path(locale: locale, l2: l2)}#{rest}" 这里的params[:all]可以是如下url路径 esp esp/article/1

如果follow变量有一个值,我想在“/”前面加上前缀,否则如果它是nil,则将其保留为nil

    l2, follow = params[:all].split('/', 2)
    follow     = follow.nil? ? follow : "/#{follow}"
    redirect_to "#{my_path(locale: locale, l2: l2)}#{rest}"
这里的params[:all]可以是如下url路径

esp
esp/article/1
esp/article/1/author/1
编辑: 我的方法可行,但我想知道是否有更好的方法

follow.nil? ? follow : "/#{follow}"
由于Ruby具有方法,因此可以通过以下方式重构代码:

follow && follow.prepend("/")
或者,由于Ruby 2.3具有安全的导航功能,因此可以更简洁地表达:

follow&.prepend("/")

但是你实际上是在下面的一行中做的,follow.nil?follow:/{follow}。这种方法不管用?它很管用,我只是想知道是否有更好的wayfollow&&=follow。prepend“/”看起来很好,但prepend实际上变异了变量,因此没有必要指定follow&&=/{follow}也是一个不错的选择:prepend是这里更好的专用选择,但是&&=可以处理更多的任意操作,并避免对原始字符串进行变异,这是一个问题。只是澄清一下,那就是follow&&follow.prepend“/”对吗?