0

我正在尝试获取 ab 标记的内容,然后使用它来查询辅助方法,在我的轨道上。但我不知道该怎么做。有人可以提供一些帮助吗?

“查询”是辅助方法。我需要将 b 标签中包含的文本传递给它。帮助..?

<div class="col span_1_of_7">
    <section id="feed">
        <div id ="infoFeed">
            <ul style="font: 10px sans-serif;text-align: justify;">
                <script>
                    $(document).click(function(){
                        <% query($("#tooltip b").text();) %>
                    });
                </script>
                <% Story.all.each do |story| %>
                    <li style="border-style:solid;border-top:thick double #000;">
                        <p><h4 style="text-align:left;"><%= link_to story.title, story.url, :target => "_blank" %></h4> 
                        <%= story.description %> <h7><br /><br /><%= story.source %><br /><%= story.date.to_date %></h7></p></li>
                <% end %>
            </ul>
        </div>
    </section>
    <script> $(function() { $('#infoFeed').vTicker();});</script>
</div>
4

1 回答 1

2

您正在做的事情可能令人兴奋,但这在客户端 - 服务器 Web 应用程序中是不可能的。

您需要了解 Web 应用程序的基础知识并了解分隔服务器端代码和客户端代码的行。

Ruby (Rails) - 是服务器端:这意味着它生成您的 HTML 或 JS 或 CSS,并且此 HTML/JS/CSS 被发送到客户端(浏览器)。在我们的浏览器中,HTML 被解析并绘制在您的屏幕上,然后执行 JavaScript 代码,并使用发送的 HTML 执行您想要的任何操作。此 JavaScript 无法直接访问您服务器上的 Ruby 代码。

好吧。让我们看看你做了什么。

$(document).click(function(){
  <% query($("#tooltip b").text();) %>
});

好的。您已经在您的点击处理程序中为您添加了一个 ERB 脚本document(为什么要这样做?)。好的,我不会和你谈论你的 JavaScript 错误。让我们在这里解决服务器 - 客户端问题。

这是您期望发生的事情:

加载网页后,#tooltip b使用 jQuery 函数提取其中的文本text,并将其传递给queryruby​​ helper 并执行一些操作。

真正发生的事情

当这个页面由 Rails 生成时,(记住这发生在你的服务器上,它不会执行你的 JAVASCRIPT。它看到的只是带有嵌入式 Ruby 的纯文本<% %>),查询助手被调用,它的参数是 this $("#tooltip b").text();。我告诉过你这个 JavaScript 不会在服务器中执行。所以这被传递到查询中,而 ruby​​ 不知道是什么$("#tooltip b").text();。因为它甚至不是一个字符串(看你周围没有引号),Ruby 可能会抛出一个语法错误。

所以底线是!您希望 JQuery 获取内容#tooltip b并将其传递给 Ruby 函数。这不会发生,因为这个 JavaScript 本身是由 Ruby 生成的,并且只有在这个 HTML 响应被构建并发送到客户端的浏览器(没有 Ruby 运行时)之后,JavaScript 才会被执行。

我希望你明白。请阅读:https ://softwareengineering.stackexchange.com/questions/171203/what-are-the-difference-between-server-side-and-client-side-programming


好吧。那么你如何实现这一点。记住?我说你不能“直接”访问 Ruby 代码。这是否意味着您可以以某种方式间接地做到这一点?是的!正如您在评论中建议的那样,使用 Ajax。

您需要编写一个动作来帮助您调用该query方法。然后,您需要对与您刚刚编写的操作对应的 URL 进行 AJAX 调用,并将结果$("#tooltip b").text();作为数据传递。在您的操作中,从参数哈希中获取此数据并将其传递给您的助手并进行处理。根据您的意愿以 js 或 json 形式返回结果。

好的步骤:

  1. 在 Rails 中创建一个动作并添加一个路由来访问这个动作。
  2. params在动作内部,从哈希中获取从客户端发送的数据。我想你知道该怎么做。并将其传递给查询辅助方法。(你需要在你的控制器中包含你的帮助模块才能工作)
  3. 使用orrespond_to 只是根据您的情况render返回结果。jsonjs

  4. 在客户端,将 ajax 调用添加到操作的 url 并传递数据。添加一个成功回调,这将接收您从您的操作发送的任何内容。用它来做任何你想做的事。

请参考网络上的资源。这里不是写教程的地方。

于 2013-10-27T14:16:51.203 回答