Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails js.erb文件找不到方法;渲染“;_Javascript_Ruby On Rails_Ruby_Erb - Fatal编程技术网

Javascript Rails js.erb文件找不到方法;渲染“;

Javascript Rails js.erb文件找不到方法;渲染“;,javascript,ruby-on-rails,ruby,erb,Javascript,Ruby On Rails,Ruby,Erb,我在Javascript ERB文件中有以下代码: $(document).ready(function() { $("#workout-week").append( <%= escape_javascript(render :partial => "show_training_period", :locals => { :period => @period }) %> ); }); 您正在尝试从资源中使用渲染。不幸的是,现在不可能了,看看。在新的

我在Javascript ERB文件中有以下代码:

$(document).ready(function() {
  $("#workout-week").append(
    <%= escape_javascript(render :partial => "show_training_period", :locals => { :period => @period }) %>
  );
});

您正在尝试从资源中使用
渲染
。不幸的是,现在不可能了,看看。

在新的资产管道中,在静态资产(
/app | lib | vendor/assets/
)中,您可以使用一些“静态”帮助程序(即
),因为您只需编译一次(如果您正在生产),而不是每次生成http请求。因此,在静态资产中使用诸如
渲染
(或一般的“动态”内容)之类的方法是没有意义的


对于您的特定情况,您可以同时使用*.js.erb视图(将“匹配”控制器中的特定操作)或直接在html中呈现的javascript。

您不能使用Rails呈现。但是仍然可以使用Erubis::Eruby直接渲染来使用分部

$(document).ready(function() {
    $("#workout-week").append(<%= escape_javascript(
        Erubis::Eruby.new(File.read(File.join(Rails.root, 'app/views',
        '_show_training_period.html.erb'))).result(period: @period)) %>);
});
$(文档).ready(函数(){
$(“#训练周”).append();
});
还是在哈姆

$(document).ready(function() {
    $("#workout-week").append(<%= escape_javascript(
        Haml::Engine.new(File.read(File.join(Rails.root, 'app/views',
        '_show_training_period.html.haml'))).render(Object.new, period: @period)) %>);
});
$(文档).ready(函数(){
$(“#训练周”).append();
});
由于某些原因,使用ERB会中断链轮渲染。
而且传递局部变量的绑定方式太难看了


这是一种解决方法,但最好记住,不建议在资产中使用分部。更好的方法是将部分代码隐藏在HTML中的某个地方,并在Java脚本中使用它

这将是哪个Rails版本?版本3.1.0 lalala最小文本。您尝试过使用RJS模板吗?这当然不是一个永久的解决办法。我问得更多是出于好奇。我以前从未听说过。让我读一读,然后再给你回复。是的,事实证明这是正确的。将我的js.erb移到views文件夹中,它起了作用。这对我也起了作用。如果它的扩展名是.js.erb,它应该在app/views文件夹中,而不是在app/assets/javascripts文件夹中。如果Rails 4中有人对它有问题,它就解决了这个问题。
$(document).ready(function() {
    $("#workout-week").append(<%= escape_javascript(
        Erubis::Eruby.new(File.read(File.join(Rails.root, 'app/views',
        '_show_training_period.html.erb'))).result(period: @period)) %>);
});
$(document).ready(function() {
    $("#workout-week").append(<%= escape_javascript(
        Haml::Engine.new(File.read(File.join(Rails.root, 'app/views',
        '_show_training_period.html.haml'))).render(Object.new, period: @period)) %>);
});