我观看了关于不引人注目的javascript的railscast并阅读了大量的教程,但是关于Rails3中不显眼的javascript的两件事仍然让我困惑:
让我用示例代码澄清一下。我想创建一个链接,淡出一些带有“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。
答案 0 :(得分:1)
我会尽力逐一回答。
link_to
中的网址。它将是应用程序中任何资源的url哈希。假设您已在routes.rb中指定了resources :foos
,它将为CRUD操作创建6个URL。您可以通过new_foo_url
,foo_url(@foo)
或foos_url
等方法将这些内容传递给网址。即使您可以像{:controller=>:foos_controller, :action=>:index}
一样手动传递哈希,也可以将多个参数传递给哈希,如{:controller=>:foos_controller, :action=>:index, :param1=>"value1", :param2=>"value2"}
。您还可以传递foos/new
,foos/1
等
您可以非常轻松地使用jQuery访问自定义标记属性。例如,您想要使用id="link"
访问锚点,您可以$('#link').attr("data-timeout")
。如果你不知道id究竟是什么,但你知道它有一个属性,你可以致电$("a[data-timeout]").first().attr('data-timeout')