如何在rails 4中渲染部分来自.js.erb的文件?

在我的rails应用程序中,我在/ assets / javascript文件夹中有dragdrop.js.erb。 其中我有一个ajax块,它应该在div中使用on click动作呈现部分。 我尝试过很多东西,但是我无法让它发挥作用。 任何帮助,将不胜感激。

这是代码:

$.ajax({ type: "GET", url: "", success: function(resp){ $("#property").load(" 'recipes/package_form') %>") } 

资产管道

首先,您需要确保直接在javascript中使用任何Rails动态路径助手。

问题是,如果您预编译资产管道,您通常会发现这些动态路径帮助程序无法正常工作。 尽管它没有“错误” – 我倾向于将Rails后端代码与前端完全分开,以确保应用程序的多function性:

 #app/assets/javascripts/application.js $(document).on("click", ".element", function(){ $.ajax({ type: "GET", url: "/cookbooks" }); }); 

这将向您的控制器后端发送“裸”Ajax请求(没有参数/正文):

 #app/controllers/cookbooks_controller.rb Class CookbooksController < ApplicationController def index @cookbooks = Cookbook.all respond_to do |format| format.html format.js #-> loads /views/cookbooks/index.js.erb end end end 

这里的技巧是你现在可以使用渲染部分所需的参数来填充index.js.erb文件:

 #app/views/cookbooks/index.js.erb $("#property").html("<%=j render :partial => 'recipes/package_form' %>") 

这应该适合你

您的问题是您尝试在assets使用render ,但renderassets 中不可用

您应该将.js.erb文件移动到app/views下的相应目录中


这是一些其他类似的问题:

  1. 在资产中渲染部分
  2. Rails JS ERB文件找不到方法渲染
  3. 从tasks.js.coffee.erb渲染部分时 – 未定义,渲染