1

我看过关于不显眼的 javascript 的 railscasts 并阅读了许多教程,但是 Rails3 中关于不显眼的 javascript 的两件事仍然让我感到困惑:

  1. 简单 javascript 的终点(隐藏一些元素,添加 CSS 类,...)
  2. 向 JS 传递参数

让我用示例代码来澄清这一点。我想创建一个链接,淡出一些 id 为“sample”的元素:

link_to 'Fade sample', url, :remote => true

url应该是什么才能执行JS?它应该是控制器中名为“javascript”的新操作,因此它可以访问 javascript.js.erb 中的 JS,其中包含:

$('#sample').fadeOut();

此外,关于 ujs 的第二个问题与向 JS 传递参数有关(本例中为超时)。我可以写:

link_to 'Fade sample', url, :data-timeout => 1500, :remote => true

但不知道如何在 javascript 中访问数据超时。

我正在使用 Rails 3.0.5、JQuery 1.5.2 和 jquery-ujs。

4

1 回答 1

1

我会尝试一一回答。

  1. 中的网址link_to。这将是应用程序中任何资源的 url 哈希。假设您已resources :foos在 routes.rb 中指定,它将为 CRUD 操作创建 6 个 url。您可以通过new_foo_url,foo_url(@foo)或等方法将这些传递给 url foos_url。即使您可以手动传递哈希{:controller=>:foos_controller, :action=>:index},也可以将多个参数传递给哈希{:controller=>:foos_controller, :action=>:index, :param1=>"value1", :param2=>"value2"}。您也可以传递字符串 url foos/new,例如foos/1

  2. 您可以非常轻松地使用 jQuery 访问自定义标签属性。例如你想用 访问锚点id="link",你可以$('#link').attr("data-timeout")。如果您不知道 id 到底是什么,但您知道它有一个可以调用的属性$("a[data-timeout]").first().attr('data-timeout')

于 2011-04-04T08:54:47.277 回答