有没有办法检查 URL 的一部分是否包含某个字符串
Is there a way to check if part of the URL contains a certain string
有没有办法检查 URL 的一部分是否包含某个字符串:
例如。 <% if current_spree_page?("/products/*") %>
,其中 *
可以是什么?
如果您所在的位置可以访问 ActionDispatch::Request,您可以执行以下操作:
request.path.start_with?('/products')
我测试过,gmacdougall 的答案有效,不过我已经找到了解决方案。
这是我用来根据 url 呈现不同布局的内容:
url = request.path_info
if url.include?('products')
render :layout => 'product_layout'
else
render :layout => 'layout'
end
需要注意的重要一点是,不同的页面会调用控制器内的不同方法(例如show、index)。我所做的是将这段代码放在它自己的方法中,然后在需要的地方调用该方法。
可以使用include?
方法
my_string = "abcdefg"
if my_string.include? "cde"
puts "String includes 'cde'"
结束`
请记住 include?
区分大小写。因此,如果上面示例中的 my_string 类似于 "abcDefg"(带有大写 D),则 include?("cde")
将 return false
。您可能想在调用 include?()
之前执行 downcase()
其他答案绝对是检查您的 URL 的最简洁方法。我想分享一种使用正则表达式执行此操作的方法,这样您就可以 在 URL.[= 中的特定位置检查 URL 中的字符串。 12=]
当您将区域设置作为 URL 的第一部分时,例如 /en/users。
,此方法很有用
module MenuHelper
def is_in_begin_path(*url_parts)
url_parts.each do |url_part|
return true if request.path.match(/^\/\w{2}\/#{url_part}/).present?
end
false
end
end
如果第一部分包含 2 个单词字符,此帮助程序方法会在第二个斜杠之后挑选出部分,如果您使用语言环境,就是这种情况。将它放在您的 ApplicationController 中,以便在任何地方都可以使用它。
示例:
is_in_begin_path('users', 'profile')
匹配 /en/users/4, /en/profile, /nl/users/9/statistics, /nl/profile 等
有没有办法检查 URL 的一部分是否包含某个字符串:
例如。 <% if current_spree_page?("/products/*") %>
,其中 *
可以是什么?
如果您所在的位置可以访问 ActionDispatch::Request,您可以执行以下操作:
request.path.start_with?('/products')
我测试过,gmacdougall 的答案有效,不过我已经找到了解决方案。
这是我用来根据 url 呈现不同布局的内容:
url = request.path_info
if url.include?('products')
render :layout => 'product_layout'
else
render :layout => 'layout'
end
需要注意的重要一点是,不同的页面会调用控制器内的不同方法(例如show、index)。我所做的是将这段代码放在它自己的方法中,然后在需要的地方调用该方法。
可以使用include?
方法
my_string = "abcdefg"
if my_string.include? "cde"
puts "String includes 'cde'"
结束`
请记住 include?
区分大小写。因此,如果上面示例中的 my_string 类似于 "abcDefg"(带有大写 D),则 include?("cde")
将 return false
。您可能想在调用 include?()
downcase()
其他答案绝对是检查您的 URL 的最简洁方法。我想分享一种使用正则表达式执行此操作的方法,这样您就可以 在 URL.[= 中的特定位置检查 URL 中的字符串。 12=]
当您将区域设置作为 URL 的第一部分时,例如 /en/users。
,此方法很有用module MenuHelper
def is_in_begin_path(*url_parts)
url_parts.each do |url_part|
return true if request.path.match(/^\/\w{2}\/#{url_part}/).present?
end
false
end
end
如果第一部分包含 2 个单词字符,此帮助程序方法会在第二个斜杠之后挑选出部分,如果您使用语言环境,就是这种情况。将它放在您的 ApplicationController 中,以便在任何地方都可以使用它。
示例:
is_in_begin_path('users', 'profile')
匹配 /en/users/4, /en/profile, /nl/users/9/statistics, /nl/profile 等