在我的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') %>")
}
答案 0 :(得分:6)
您的问题是,您尝试在render
中使用assets
,但是render
is not available in assets
您应该将.js.erb
文件移至app/views
以下是其他一些类似的问题:
答案 1 :(得分:5)
资产管道
首先,您需要确保不直接在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' %>")
-
这应该对你有用