2009-04-23 77 views
2

我使用的是我从不能修改冻结串

http://www.igvita.com/2006/10/20/adding-social-bookmarks-in-rails/

This is the pastie code

得到了视图下面的代码,但我得到了以下错误:

TypeError in Pages#show 
Showing app/views/pages/show.html.erb where line #26 raised: 
can’t modify frozen string 
Extracted source (around line #26): 
23: Twitter 
24: Facebook 
25: 
26: <% current_uri = u(request.protocol << request.host_with_port << request.request_uri) 
27: title = u(@title) 
28: 
29: bookmarklets = { 
============ 

当我用这个替换

current_uri = u(request.protocol << request.host_with_port << request.request_uri) 

冻结的字符串错误消失了,但链接未被解析。即链接呈现如下:

http://digg.com/submit?phase=2&url={{url}}&title={{url_encoded_title}} 

嗯,我问了文章的评论,但没有得到任何答复。所以,我在这里问。

谢谢

回答

3

在你的评论中,你说你有一个名为title的助手方法。这可能会导致与标题变量的名称冲突。

将您的标题变量重命名为page_title。在顶部,网站列表之前以及底部生成链接的位置更改它。

1

另外...为什么你需要使用“< <”为什么不只是“+”。 它可能是< <正试图将host_with_port添加到持有协议字符串的数组中(即它正在修改名为“protocol”的冻结字符串,而不是仅将两者一起添加),并且与request_uri字符串相同进入host_with_port。

只需使用+进行连结,他们将停止尝试修改字符串和之前至u打算把它们加起来(),例如:

current_uri = u(request.protocol + request.host_with_port + request.request_uri)