【问题标题】:Rails 3 not loading .js.erb filesRails 3 不加载 .js.erb 文件
【发布时间】:2011-10-31 03:57:26
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    是的,您将 .js.erb 文件放置在与您正在使用它们的 .html.erb 文件相同的位置。为了让 Rails 使用它们,您需要告诉 Rails 表单应该异步提交(通过 AJAX)。为此,只需将:remote =&gt; true 添加到您的表单标签。比如

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

    【讨论】:

    • 我已经完成了这些事情,但仍然无法加载文件。名字对吗?或者可能需要在控制器中做些什么?
    • 你是否包括rails.jsjQuery-Rails之类的东西?
    • 那么你应该确保你的方法和/或控制器responds_to AJAX 请求。
    【解决方案2】:

    要使用 Ajax 提交表单,您需要指定 :remote =&gt; true 选项,正如 Alex 指出的那样。

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

    class FormHandlingController < ApplicationController
    
      def create
        ...
        respond_to do |format|
          format.js
        end
      end
    
    end
    

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

    【讨论】:

    • 谢谢你!这让我整天发疯。我无法弄清楚为什么我的 js.erb 文件无法正常工作,并且我在相应的控制器中缺少 format.js。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 2023-03-11
    • 2012-12-08
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多