【问题标题】:Dynamically changing text in twitter button (rails+jquery)动态更改 twitter 按钮中的文本 (rails+jquery)
【发布时间】:2011-06-29 08:55:11
【问题描述】:

好的,所以我有index.html.erb。在其中我有菜单,我从_menu.html.erb 渲染,和 div,我通过在控制器中使用显示操作从show.html.erb 渲染链接。链接由 <%=link_to h(@link), h(@link) %> 显示(来自 show.html.erb 的代码)。

在其中渲染链接的Div,经常被$('#div_with_link').load('controller/show');刷新,所以@link变化很大。

问题是,我不知道应该在我的推特按钮文本区域中放什么。我希望人们能够分享当前的链接。我试过data-text="<%=@video %>",但它只是在我的网页上显示链接,而不是生成一个。

我应该怎么做,将生成的链接放在我的 twitter 按钮中?任何建议都会有所帮助,在此先感谢您。

【问题讨论】:

  • 我很难理解您的描述。我说对了吗:您正在页面上显示一个链接。然后,您将通过 AJAX 更新链接。但是推特没有更新,因此显示了错误的链接?
  • 和 twitter 按钮位于不同的布局,而不是链接,但它们一起呈现在 index.html.erb
  • AJAX 请求完成后,您能否使用 jQuery 更新 Twitter 按钮?如果您可以提供按钮的 HTML 或在线示例,我可能会为您提供帮助。
  • link 这是链接,但请不要害怕一些俄罗斯和疯狂的 noobie 代码。

标签: jquery ruby-on-rails ajax twitter


【解决方案1】:

好的,如果您使用 twitter 的默认按钮,这将很难实现。我建议简单地构建 your own button 并通过 Javascript 更新此链接的 href 属性,包括提到的参数。以下是一些帮助您入门的代码:

使用此按钮代替 Twitter 按钮并设置相应样式:

<a href="http://twitter.com/share" id="tweet">Tweet</a>

每次您将新内容加载到 div 中时,请设置新的 URL(如果您愿意,还可以设置其他参数),例如像这样:

// not knowing your app, I'm just guessing here:
var twitterParams = { 
    url: <%= url_for(@video) %>, 
    text: <%= @video.title %> 
}; 
$('#tweet').attr('href', "http://twitter.com/share?" + $.param(twitterParams));

你可以这样做,例如在通过 AJAX 加载新内容时返回的 HTML 片段中。

【讨论】:

  • @polarblau,这看起来是正确的做法。感谢您的支持。我已经完成了你所说的一切,这就是我用 ajax 返回的 HTML 的样子:&lt;%=link_to h(@video), h(@video) %&gt; &lt;script type="text/javascript"&gt; twitterParams.url = "&lt;%= h(@video) %&gt;"; $tweetLink.attr('href', baseLink + "?" + $.param(twitterParams)); &lt;/script&gt;,但它给了我Uncaught ReferenceError: $tweetLink is not defined。我使用 h() 对吗?
  • 这是来自 chrome 开发工具的完整错误日志:(anonymous function)zalipay:3 jQuery.extend.globalEvalzalipay:540 evalScriptzalipay:785 jQuery.extend.eachzalipay:580 jQuery.fn.extend.domManipzalipay:4314 jQuery.fn.extend.appendzalipay:4073 jQuery.fn.extend.htmlzalipay:4220 jQuery.fn.extend.load.jQuery.ajax.completezalipay:4830 completezalipay:5279 jQuery.extend.ajax.onreadystatechange.xhr.onreadystatechangezalipay:5214
  • 是的,问题可能是您定义了$tweetLink,无法像这样访问它。只需将$tweetLink 替换为$('#tweet'),看看会发生什么。顺便说一句:据我所知,如果您使用的是 Rails 3,则在这种情况下您根本不必再使用 h()
  • 你的意思是,我应该有这样的东西? var $('#tweet'); baseLink = $('#tweet')[0].href $('#tweet').attr('href', baseLink + "?" + $.param(twitterParams)); 因为我确实有,而且它给了我 Uncaught SyntaxError: Unexpected token ( error on var $('#tweet');
  • 不,抱歉,如果我说得不够清楚。我将更新上面的示例。还要确保在 var $('#tweet'); baseLink = … —> var $('#tweet'), baseLink = 这样的情况下不要使用分号。您在此处连续定义多个变量。 // 还有一件事:一旦你搞定了,你就会遇到下一个问题(它可能找不到baseLink),请查看我的最新更新。
猜你喜欢
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 2017-01-30
  • 1970-01-01
  • 2012-05-24
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
相关资源
最近更新 更多