如何在rails app中使用js.erb

时间:2016-08-21 20:13:58

标签: javascript ruby-on-rails ruby ajax

我已经尝试了使用js.erb文件的所有内容,因为我需要使用ruby和我的js。

我知道这不是代码,因为我在application.js中有相同的东西,并且它工作正常。

模特:主题

我尝试将topics.js.erb添加到views / topics / 我已经尝试了部分_index.js.erb并渲染它 - 我看到它正在加载,但它没有执行。

在这两个文件中,我有:

np.random.seed(0)
df = pd.DataFrame(np.random.randn(100, 5), columns=list('ABCDE'))
df.iloc[::10] += np.random.randn() * 2  # this hopefully introduces some outliers
df.head()
Out: 
          A         B         C         D         E
0  2.529517  1.165622  1.744203  3.006358  2.633023
1 -0.977278  0.950088 -0.151357 -0.103219  0.410599
2  0.144044  1.454274  0.761038  0.121675  0.443863
3  0.333674  1.494079 -0.205158  0.313068 -0.854096
4 -2.552990  0.653619  0.864436 -0.742165  2.269755

我有什么明显的遗失吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

好的,我想我现在明白你的问题。您在控制器,index.html.erb视图和index.js.erb中有一些索引操作,并且您希望在呈现index.js.erb后从index.html.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");
  }
});