簡體   English   中英

Rails:如何在 Rails 生成的 URL 搜索字符串中將“空格”轉義為 %20 而不是 +

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM