У меня есть приложение rails, в котором я использую kaminari для разбивки на страницы.
Каким-то образом kaminari использует неправильный URL для гиперссылок.
Прямо сейчас я ищу простое исправление, которое требует некоторого регулярного выражения и gsubbing.
У меня есть URL-адрес от kaminari:
"/bookings/hotels//Pune?arrival_date=....."
Я хочу заменить эту часть - /hotels//Pune?
на эту - /hotels?
Вместо Pune
может быть любая другая строка (она может измениться).
Как мне это сделать?
3 ответа
Захват и замена с помощью match capture
gsub(/hotels(\/\/\w+)\?/){|m| m.gsub($1, '')}
str = "/bookings/hotels//Pune?arrival_date=....."
str.gsub(/hotels(\/\/\w+)\?/){|m| m.gsub($1, '')}
#=> "/bookings/hotels?arrival_date=....."
Я всегда использую библиотеку URI, когда бездельничаю с URL-адресами он выполняет часть работы за вас (особенно, если задействованы строки запроса).
Что-то вроде этого подойдет вашей ситуации, хотя, вероятно, есть способ получить правильный URL-адрес в первую очередь!
require 'uri' # probably not necessary if you are using Rails
old_url = "/bookings/hotels//Pune?arrival_date=blahblah"
uri = URI(old_url)
# remove everything between the first double '//' and the end of the string
uri.path = uri.path.gsub(/\/\/.+\Z/, '')
# => "/bookings/hotels"
# output a new url using the new path but including the original query string
new_url = uri.to_s
# => "/bookings/hotels?arrival_date=blahblah"
Gsub ("// Пуна", "") Здесь не нужно 4 регулярных выражения.
Похожие вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.