リンクに含めるために (スペース : / &) などの特殊文字をエスケープしようとしています。次のことを試しましたが、「#」文字のみをエスケープします。
<a href="https://twitter.com/share?text=<%=location.title.html_safe%><%=h root_url(:anchor => "_lat=#{location.latitude}&long=#{location.longitude}&zoom=17").html_safe%>">Tweet</a>
<%=CGI.escapeHTML location.title%><%=CGI.escapeHTML root_url(...)%>
root_url のスペースや http:// をエスケープしないことも試しました
ありがとう。
編集 ありがとう Sirupsen、これが私がやったことです。空白が + としてエスケープされていることを除いて、出力は正しいです。それが最適かどうかはわかりません...
<!-- added var to make it more readable-->
<% tweetLink = root_url(:anchor => "_lat=#{location.latitude}&long=#{location.longitude}&zoom=17")%>
<a href="https://twitter.com/share?text=<%= URI.encode_www_form_component "#{location.title} #{tweetLink}"%>">Tweet</a>
出力は location.title ="http:// test in title" に基づいて正しいです:
https://twitter.com/share?text=http%3A%2F%2F+test+in+title+http%3A%2F%2Flocalhost%3A3000%2F%23_lat%3D43.82864423876971%26long%3D-79.36823174357414% 26zoom%3D17と twitter はそれを受け入れます。
ご協力いただきありがとうございます