2011-08-20 93 views
2

我想要两个.js.erb文件,名为“create”和“update”来加载并执行,以便在一个视图中用一个更新后的部分表格已提交。Rails 3 not loading .js.erb文件

都包含以下这些文件(它们是相同的)

$('table#rating').replaceWith("<%= escape_javascript(render :partial => 'home/rating') %>"); 

但是我不能确定在哪里放置.js.erb文件(在同一视图作为我html.erb页?),以及如何在表单提交时加载/触发它们。任何帮助,将不胜感激。

回答

3

是的,您将.js.erb文件放置在您使用它们的.html.erb文件的相同位置。为了让Rails使用它们,你需要告诉Rails表单应该被异步提交(通过AJAX)。要做到这一点,只需添加一个:remote => true到您的表单标签。例如

<%= form_for @some_model, :remote => true do %> 
<!-- form stuff... --> 
<% end %> 
+0

我已经做了这些事情,仍然无法加载文件。名字是否正确?或者也许在控制器中必须做些什么? – user852974

+0

你是否包含'rails.js'和类似[jQuery-Rails](https://github.com/rails/jquery-rails)? – Alex

+0

是的,我已经包含那些.js文件 – user852974

2

为了使用Ajax提交表单,您需要指定Alex指出的:remote => true选项。

在处理表单提交的控制器中也应该能够响应Ajax请求。它应该有像下面这样的东西。

class FormHandlingController < ApplicationController 

    def create 
    ... 
    respond_to do |format| 
     format.js 
    end 
    end 

end 

你应该把你的craete.js.erbapp/views/form_handling_controllers/目录。

+0

谢谢!这整天都让我疯狂。我无法弄清楚为什么我的js.erb文件不能正常工作,并且我在相应的控制器中缺少format.js。 – Arel