2012-05-30 47 views
0

我一如既往地掌握了自己的想法,但這是我學習的唯一方法。現在我試圖查詢數據庫中的當前用戶列並返回值。我使用的是這樣的:從活動記錄查詢中刪除URL編碼

@tags = current_user.tags.select(:name).each { |p| p.name} 

但它返回:

%5B%23%3CTag+name%3A+%22tag1%22%3E%2C+%23%3CTag+name%3A+%22tag2%22%3E%2C+%23%3CTag+name%3A+%22tag+test%22%3E%5D 

從我的理解是這是URL編碼。有沒有可能清理那個?我試過使用.delete.gsub,但我一定在做錯事。任何見解?我在網站上的所有研究都產生了如何進行網址編碼,而不是網址解碼。

+0

爲什麼要使用每個?你應該使用'map'或'collect'。 – zsquare

+0

好吧,'集合'返回更多我什麼,只是名稱本身。但是,它們仍然被url編碼字符包圍。沒有深入細節,爲了測試項目的另一個方面,我試圖將這個信息添加到cookie中。如果我這樣做,我希望能夠正確格式化。 – pacothelovetaco

回答

0

對於URI編碼/解碼可以看看rubyonrails.org:URI::Escape

對於顯示在滑軌HTML視圖檢查出的原料()方法rubyonrails.org:ActionView::Helpers::OutputSafetyHelper

+0

問題是,它必須進入cookie。現在我有類似'@tags = current_user.tags.select(:name).collect {| p | p.name}'這是返回'[「tag1」,「tag2」,「測試標籤」]'。當我使用cookies [:login] = {:value =>「#{current_user.id}.#{@tags}」,:expires => Time.now + 3600將它嵌入cookie中時,它似乎正在被編碼}'。我嘗試使用'URI'或'gsub'來解碼,但我得到的只是錯誤或命令被忽略。不用說,我不認爲我知道我在做什麼。 – pacothelovetaco

+0

該標準沒有明確說明cookie值可以/不能被URL編碼,但大多數cookie是URL編碼的。你有沒有嘗試過首先創建一個簡單的cookie?嘗試創建一個新的cookie __cookies [:stuff] =「測試東西」__然後從cookie中獲取值並將其拋入實例變量__ @ test = cookies [:stuff] __並最終使用視圖來顯示它__ <%= @test %> __。如果我使用Firefox瀏覽cookie,則返回「測試+內容」。但是,從cookie返回值將返回空格而不是「+」字符。 Cookie鍵/值對並不意味着通過瀏覽器看起來很漂亮。 – rbnewb

+0

這基本上是我想知道的。我想一個cookie將始終使用URL編碼進行格式化。讓其他應用程序解碼cookie的內容似乎更容易。所以我現在擁有的已經夠好了。我會檢查這個答案,因爲你指導我解決問題。非常感謝! – pacothelovetaco