当前位置: 首页 > 面试题库 >

在Rails 3应用程序中添加页面特定JavaScript的最佳方法?

邹英光
2023-03-14
问题内容

Rails 3具有一些不引人注目的JavaScript,这非常酷。

但是我想知道最好的方法是为特定页面包含其他JavaScript。

例如,我以前可能做过的地方:

<%= f.radio_button :rating, 'positive', :onclick => "$('some_div').show();" %>

我们现在可以使用类似的方法使其变得不引人注目

<%= f.radio_button :rating, 'positive' %>

# then in some other file
$('user_rating_positive').click(function() {
  $('some_div').show();
}

所以我想我的问题是在哪里/如何包含该JavaScript?我不想填写该application.js文件,因为此JavaScript仅适用于该视图。我应该以某种方式为每个页面包含一个自定义JavaScript文件,还是将其粘贴在标题所要查找的实例变量中?


问题答案:

我想做的是将每个视图的Javascript包含在一个content_for :head块中,然后yield应用程序布局中添加到该块。例如

如果很短,则:

<% content_for :head do %>
  <script type="text/javascript">
    $(function() {
      $('user_rating_positve').click(function() {
        $('some_div').show();
      }
    });
  </script>
<% end %>

或者,如果更长,则:

<% content_for :head do %>
  <script type="text/javascript">
    <%= render :partial => "my_view_javascript"
  </script>
<% end %>

然后,在您的布局文件中

<head>
  ...
  <%= yield :head %>
</head>


 类似资料:
  • 问题内容: 在应用程序中是否有任何良好的GUI作为小部件支持Pygame表面? 如果这不可能或不可行,那么哪个GUI工具箱具有最佳的图形组件?我希望通过SDL包装器保持快速渲染成为可能。 问题答案: 在这里,您将获得有关如何整合以及进行互动和互动的说明。 在我看来,最好的GUI工具包是wxPython(wxWidgets的绑定),它具有几乎包括OpenGL小部件在内的所有GUI小部件,并且SDL也

  • 我有一个应用程序,它使用了3个不同的JAR库。。。让我们称它们为a.jar、b.jar和c.jar。每个JAR都有一个附带的本机C共享对象。 现在,a.jar和b.jar导入和使用c.jar. 所以,我的问题是-当使用系统加载本机libs时,最好的方法是什么。loadLibrary?我可以从我的应用程序代码中全部加载它们,还是必须由相应的JAR加载它们?如果我从各自的JAR文件中加载它们,是否会加

  • 问题内容: 在GWT应用程序中将 大量HTML外部化 的最佳方法是什么?我们有一个相当复杂的GWT应用程序,大约有30个“页面”;每个页面的底部都有一种指南,它是HTML标记的几段。我想外部化HTML,以使其尽可能保持“未转义”状态。 我知道并了解如何在GWT中使用 属性文件 ;这肯定比将内容嵌入Java类更好,但是对于HTML来说仍然很难看(您需要对所有内容都反斜杠,以及转义引号等)。 通常,这

  • 问题内容: 以下是我典型的程序的整体结构。 funA funB并在用户单击按钮1、2、3时funC打开另一个Toplevel带有窗口小部件的窗口。 我想知道这是否是编写python tkinter程序的正确方法吗?当然,即使我这样写也可以,但这是最好的方法吗?听起来很愚蠢,但是当我看到其他人编写的代码时,他们的代码并没有弄乱一堆函数,而且大多数情况下都有类。 有没有作为良好实践应遵循的特定结构?开

  • 我试图了解使用android应用程序下载文件的不同方法的利弊。 我找到了几种方法: 自己管理下载(请参阅此代码片段) 使用Android的DownloadManager 使用OKHttp下载文件,如本文所述 有这方面经验的人能告诉我选择一种方式而不是另一种方式的原因吗?

  • 我将rpush gem添加到我的gemfile并运行bundle install。根据文档,下一步是运行rpush init。这给了我以下错误。