gpt4 book ai didi

ruby-on-rails - 如何在 Ruby on Rails 中创建项目范围内可用的 javascript 函数?

转载 作者:行者123 更新时间:2023-12-03 13:27:06 26 4
gpt4 key购买 nike

我将以下函数放在我的 application.js 中:

function test() {
alert("See Me")
}

教室/_new_small.html.haml:
:javascript
alert('test');
test();

在我的 application.html.haml 我使用以下内容:
= javascript_include_tag 'application'

我收到了 test is not defined我的 Firebug 控制台中的错误。测试功能不应该在项目范围内可用,因为它在 application.js 文件中吗?谢谢

编辑:我正在通过 javascript 呈现页面。那会影响它吗?
$('#test_container').html("<%= escape_javascript(render :partial => 'classrooms/new_small') %>");

最佳答案

假设您正在使用 Assets 管道和 CoffeeScript :不要在 application.js 中编写代码

为了保持结构整洁,请在 application 中创建一个文件夹(例如:app/assets/javascripts)

然后在您的 application.js 中要求它

//= require jquery
//= require jquery_ujs

//= require_tree ./application

创建咖啡文件(例如: app/assets/javascripts/application/my_feature.js.coffee
@test = ->
alert('Hello world')

咖啡输出:
(function() {

this.test = function() {
return alert('Hello world');
};

}).call(this);

最好使用命名空间:
@myGreatFeature =
test: ->
alert('Hello world')

或者根据coffeescript FAQ,你可以写
namespace = (target, name, block) ->
[target, name, block] = [(if typeof exports isnt 'undefined' then exports else window), arguments...] if arguments.length < 3
top = target
target = target[item] or= {} for item in name.split '.'
block target, top

namespace 'myGreatFeature', (exports) ->
exports.test = ->
alert('Hello world')

那么您可以调用 myGreatFeature.test()到处

关于ruby-on-rails - 如何在 Ruby on Rails 中创建项目范围内可用的 javascript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14096301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com