Rails 3没有加载.js.erb文件

时间:2011-08-20 10:22:12

标签: javascript jquery ruby-on-rails ruby erb

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

文件都包含以下内容(它们是相同的)

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

在处理表单提交的控制器中也应该能够响应Ajax请求。它应该有类似的东西。

class FormHandlingController < ApplicationController

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

end

您应将craete.js.erb放在app/views/form_handling_controllers/目录下。