2016-08-21 21 views
0

我尝试了所有可以使用js.erb文件的方法,因为我需要使用ruby以及我的js。如何在rails应用程序中使用js.erb

我知道这不是代码,因为我在application.js中有同样的事情,它工作正常。

型号:主题

我已经尝试添加topics.js.erb到的意见/主题/ 我已经尝试了部分_index.js.erb和渲染 - 我看到它加载,但它没有执行。

在这两个文件,我有:

$(document).ready(function() { 
    console.log('something'); 
}) 

有什么明显的,我在这里失踪? 谢谢!

+0

检查你主题控制器的行动,并确保你确实用js做出回应,默认情况下你的回复是html!这里我们去:http://guides.rubyonrails.org/working_with_javascript_in_rails.html!你的回应应该是这样的:respond_with do | format | format.js format.html结束。您也可以检查您的控制台(轨道与运行服务器),你应该看到像渲染主题#索引在js格式.. – Evgeny

回答

1

好吧,我想我现在理解你的问题。您在控制器中有一些索引操作,index.html.erb视图和index.js.erb,并且您想在呈现index.html.erb后从index.js.erb运行javascript。它不会工作,js.erb意见被用于其他的东西。要仅在索引操作呈现时运行JavaScript代码,您可以将此JavaScript代码放入index.html.erb视图中。或者,您可以将此代码放入您的application.js文件中并添加其他条件,以便它仅运行索引操作。

没有Rails的方式解决了这个,但你可以尝试这样的事:

index.html.erb:

# ... your code here 

<script type="text/javascript"> 
    window.railsView = "controller_name#index"; 
</script> 

的application.js:

$(document).ready(function() { 
    if (window.railsView == "controller_name#index") { 
    console.log("something"); 
    } 
}); 
+0

我有一个名为index.js.erb文件保存在我的主题视图。我还需要做什么,只是为了让控制台记录渲染页面的内容?它仍然没有连接 – gwalshington

+0

@gwalshington现在我明白你的意思了。我改变了我的答案。 –

+0

什么是js.erb文件用于?我的最终目标是将js和ruby都放在同一个文件中。例如,我想定义current_user并知道他们是否已经收藏了一个主题,并且他们在索引页面上是异步/不喜欢/最喜欢的。这已经通过ruby完成了,但是页面会随着每个动作重新加载。这不是使用js.erb吗? – gwalshington

相关问题