如何从Javascript中呈现部分资源

如何从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 ->

我正在尝试从我的资产目录中的javascript中呈现部分。我发现我无法在assets目录中调用render方法。但是我也不能将我的ajax命令移出assets目录。现在我的问题是,如何将ajax结果传递到视图中的action.js文件中

因此,我在onclick jQuery事件上调用ajax:

/app/javascript/mymodel.js.coffee

$(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