Javascript Rails js.erb文件找不到方法;渲染“;
我在Javascript 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 }) %> ); }); 您正在尝试从资源中使用渲染。不幸的是,现在不可能了,看看。在新的
$(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)) %>);
});