javascript - 有没有更好的方法在 Ruby on Rails 上执行 Unobtrusive JavaScript?

标签 javascript ruby-on-rails ruby

我发现在不使用 RJS 或 ERB 的情况下将 javascript 放在单独的文件中的方法是在 javascript_include_tag 帮助程序中使用实例变量。

<%= javascript_include_tag @extra_head_content if !@extra_head_content.nil? %>

然后我将当前 javascript 文件的名称放在 Controller 的实例变量中;

def index
    @extra_head_content = "test"
#...
end

然后在我的 javascript 文件 (test.js) 中添加一些代码。

 $j(function() {
  alert("test");
 })

有没有“更好”的方法来做到这一点?我缺少任何约定吗?

我找到了很多关于 UJS 到 XHR(AJAX) 的信息,但是没有关于像“unobtrusive (document).ready”这样简单的事情的约定

我正在使用 rails 3-0-9。

最佳答案

我做这样的事情:

在 ApplicationHelper 中:

def javascript(file)
  content_for(:javascript_at_head){ javascript_include_tag file }
end

在 layouts/application.html.erb

<%= yield(:javascript_at_head) %>

在另一个模板中:

<% javascript :test %>

关于javascript - 有没有更好的方法在 Ruby on Rails 上执行 Unobtrusive JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7374039/

相关文章:

ruby-on-rails - 微博评论用户页(Ruby on Rails)

php - 如何检查用户是否已在 Javascript 中上传文件

javascript - 检查 2 个 JavaScript 字符串是否指向同一个对象

javascript - 数组构建正则表达式的多个选项

ruby-on-rails - 升级到 Rails 5 后替换 ActionDispatch::ParamsParser

ruby-on-rails - RSpec 失败 : could not find table after migration. ..?

javascript - 动画 SVG 蒙版删除

ruby-on-rails - 屠宰 Ruby on Rails 安装

ruby - 字符串数组中的所有公共(public)子序列

ruby - RB树插入顺序敏感性