为什么rails没有找到.js.erb中定义的函数?

时间:2013-03-21 09:17:00

标签: ruby-on-rails ruby ruby-on-rails-3

Rails无法识别我的.js.erb文件,只是忽略了那里的任何内容。

advanced_search.html.erb

中的相关摘要
<%= render "advanced_search_orders_form" %>

我有另一个文件_advanced_search_orders_form.html.erb,该文件显示正确,但有一个小问题。

_advanced_search_orders_form.html.erb

中的相关摘录
<form id="advancedSearchOrder" name="advancedSearchForm" value="advancedSearch" action="" class=" search line" method="GET" onsubmit="return validateAdvancedSearchForm()" >

此validateAdvancedSearchForm()在 _advanced_search_orders_form.js.erb 中定义 但是Rails就好像函数甚至没有定义一样。此外,即使我只是在_advanced_search_orders_form.js.erb中写一个警报(“检查”),它也不会渲染。甚至编辑器(RubyMine)也说它找不到这个函数validateAdvancedSearchForm的定义。

我根本没有使用.js.erb文件,所以我确定我在那里做错了。我是否错误地定义了文件名,或者我是否必须包含它?真的很感激这里的一点帮助。

2 个答案:

答案 0 :(得分:0)

validateAdvancedSearchForm()必须放在您的assets / javascrips文件夹中的.js文件(.js.coffee,如果您使用咖啡脚本),然后您可以在您的页面中使用它

答案 1 :(得分:0)

默认情况下,您的.js.erb不会呈现。当你写

<%= render "advanced_search_orders_form" %>

这将呈现'_advanced_search_orders_form.html.erb',因为这是您的默认模板格式。

尝试这种方式:

<%= render :file => "advanced_search_orders_form.js.erb" %>

确保该文件中的脚本位于<script></script>标记