[英]Rails: how to escape "space" in Rails generated URL search string as %20 instead of +
我在 Rails 應用程序中有一個搜索字段。 它是這樣實現的:
<%= text_field_tag :searchAny, params[:searchAny_params], placeholder: "Search", id: "search_input", class: "search-field" %>
<%= submit_tag "Search", name: nil, id: "search-button", class: "search-button" %>
當我搜索包含空格的字符串時,例如: find something
,我在 params 中find something
,然后在 url 中呈現為find+something
。 據我所知,空間曾經通過 + 進行轉義,但現在它們應該通過 %20 進行轉義。
我非常想在我的 url 中切換到 %20,因為我在我的前端訪問查詢字符串以使其可用於新的搜索功能或在某處解析它,並且需要 + 符號作為可行的查詢字符串。 目前我無法搜索house+
或+
,因為我編寫的 JS 函數拆分了搜索字符串,目前必須用space
替換+
。
var searchquery = searchParams.split('?').pop().split('&').pop().split('=')[1].replace(/[+]/g, ' ');
在我重構之后,我希望我的 url 的搜索字符串部分帶有 %20 的空間,並讓 + 可用。
var searchquery = searchParams.split('?').pop().split('&').pop().split('=')[1].replace(/%20/, ' ');
如何更改參數在搜索字符串中的轉義方式?
我希望有人能把我引向正確的方向。 提前致謝。
目前我的 Rails 應用程序生成以下 URL:
https://www.domain.tld/collection/opac?searchAny=find+something
我希望查詢字符串已經 % 轉義:
https://www.domain.tld/collection/opac?searchAny=find%20something
根據來自類似問題的答案,您可以使用Addressable gem。 或者,您也可以嘗試使用 Javascript 的encodeUri()從前端處理 URL 編碼。 例如:
document.getElementById('search_button').addEventListener('click', function() {
var searchInput = document.getElementById("search_input");
var encodedQuery = encodeURI(searchInput.value)
// continue to use the encodedQuery as search query
});
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.