如何从Javascript中呈现部分资源
我正在尝试从我的资产目录中的javascript中呈现部分。我发现我无法在assets目录中调用render方法。但是我也不能将我的ajax命令移出assets目录。现在我的问题是,如何将ajax结果传递到视图中的action.js文件中 因此,我在onclick jQuery事件上调用ajax: /app/javascript/mymodel.js.coffee如何从Javascript中呈现部分资源,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我正在尝试从我的资产目录中的javascript中呈现部分。我发现我无法在assets目录中调用render方法。但是我也不能将我的ajax命令移出assets目录。现在我的问题是,如何将ajax结果传递到视图中的action.js文件中 因此,我在onclick jQuery事件上调用ajax: /app/javascript/mymodel.js.coffee $(document).ready -> ---some actions ---- $('.myid').click ->
$(document).ready ->
---some actions ----
$('.myid').click ->
---some action---
$.ajax 'mypath'
dataType: 'json'
success: (result)->
---render result in partial on myid-div---
那么,我如何将我喜爱的结果和我的ID传递到:
/app/views/mymodel/show.js.erb
$('.myid').html("<%= escape_javascript( render( :partial => 'myartial') ) %>");
$('.myid').html(“'myartial'))%>”;
把它渲染出来
我在这件事上绞尽脑汁已经有一段时间了,所以我真的非常感谢你的帮助 $(文档).ready->
$(document).ready ->
---some actions ----
$('.myid').click ->
---some action---
$.ajax 'mypath'
dataType: 'json'
params: (pass in what you need, i don't know the exact syntax, just google it)
success: (result)->
---render result in partial on myid-div---
controller
def show
@result = params[:result]
end
view
show.js.erb
$('#some_id').html('<%= render("mypartial").html_safe %>');
---一些行动----
$('.myid')。单击->
---一些行动---
$.ajax“mypath”
数据类型:“json”
params:(输入你需要的,我不知道确切的语法,只需谷歌一下)
成功:(结果)->
---在myid div上部分呈现结果---
控制器
def秀
@结果=参数[:结果]
结束
看法
show.js.erb
$('#some_id').html('');
@结果现在可以访问了
将结果作为参数从AJAX调用传递给控制器方法。然后实例化一个实例变量(@result,例如来自参数),这样您的视图就不能使用实例变量。您可以调用mymodel控制器的方法来呈现分部,但分部的文件名应以下划线开头
。
在您的示例中,如果将这些代码render:partial=>'show'
放入mymodel控制器中,您可以使用它们来渲染js,并且您应该在mymodel视图中将show.js.erb
重命名为\u show.js.erb
乐观地说,您应该能够渲染\u show.js.erb
,并且您可以在终端内部看到类似render\u show.js.erb
的成功
但这并不意味着rails将js.erb作为javascript处理,因为您的js.erb中存在语法错误(我绝对肯定!!)。
所以你也可以改变
$('.myid').html(“'myartial'))%>”代码>
到
$('.myid').html('myartial'))%>'代码>
查看更多详细信息。我以前也遇到过类似的问题。
它还将向您展示如何发送ajax调用和render.js.erb的示例
:remote=>true
将向行项目路径发送ajax请求
根据路由,它将调用create方法,format.js将按照约定呈现create.js.erb
。或者,我可以使用format.js{render:partial=>“create”}
呈现js.erb,如果\u create.js.erb
存在很酷,我喜欢这个答案。遗憾的是,我无法用它来创建代码。我的ajax调用确实可以获取我的信息。但是如何在success函数中调用render?你能陪我走过吗?使用此参数表示render _mypartialas format=js的函数调用是什么?因此,在show方法运行后,它将执行一个js文件(它将查找show.js.erb)。(检查更新的答案)谢谢你的回答。我认为这不是我的问题。“秀”不是我的部分,而是我的js模板。我的节目前面有一个uu。到目前为止,它还没有被命名,因为我不知道如何命名。为什么你认为我应该在我的show.js中将“替换为”?渲染部分在ajax调用中很常见。.我认为你应该将“替换为”的原因是因为我预测myartial的部分会出现很多”,并且你不能将“包含在”中。您可以使用Firebug查看ajax响应(我已经改进了我的答案:)查看它以帮助您了解如何呈现js