ruby-on-rails – 如何在rails 4中渲染.js.erb文件中的部分文件?

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

这是代码

$.ajax({  
   type: "GET",url: "<%=  Rails.application.routes.url_helpers.cookbooks_path %>",success: function(resp){
  $("#property").load("<%= escape_javascript (render :partial => 'recipes/package_form') %>") 
   }

解决方法

资产管道

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

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

#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' %>")

这应该适合你

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...