我在
的视图中使用以下代码http://www.igvita.com/2006/10/20/adding-social-bookmarks-in-rails/
但是我收到以下错误:
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}}
好吧,我在文章的评论中问道,但无法得到任何答复。所以,我在这里问。
由于
答案 0 :(得分:3)
在你的评论中,你说你有一个名为title的帮助方法。这可能导致名称与title变量发生冲突。
将标题变量重命名为page_title
。在站点列表之前的顶部更改它,在底部更改它生成链接。
答案 1 :(得分:1)
或者......为什么你需要使用“&lt;&lt;”为什么不只是“+”。 它可能是&lt;&lt;正在尝试将host_with_port添加到持有协议字符串的数组中(即它正在修改名为“protocol”的冻结字符串,而不是仅将两者一起添加)和request_uri字符串中的相同内容添加到host_with_port中。
只需使用+进行连接,他们将停止尝试修改字符串,然后在通过u()之前将它们添加到一起,例如:
current_uri = u(request.protocol + request.host_with_port + request.request_uri)