2012-05-30 16 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