0

我正在尝试从我的资产目录中的 javascript 呈现部分内容。我发现我无法在 assets 目录中调用 render 方法。但我也不能将我的 ajax 命令移出资产目录。所以我现在的问题是,如何将我的 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---

那么我如何将我心爱的结果和 myid 传递给:

/app/views/mymodel/show.js.erb

$('.myid').html("<%= escape_javascript( render( :partial => 'myartial') ) %>");  

渲染出来?

我在这个问题上纠结了很长时间,所以我真的很感激一些帮助!

4

2 回答 2

0
$(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 %>');

@result 现在可以访问了

将您的结果作为参数从您的 AJAX 调用传递给您的控制器方法。然后实例化一个实例变量(例如来自参数的@result),这样您的视图就无法使用实例变量。

于 2012-09-13T16:39:09.620 回答
0

您可以调用 mymodel 控制器的方法来渲染您的部分,但部分的文件名应该以下划线开头_

在您的示例中, render :partial => 'show'如果您将这些代码放入 mymodel 控制器并且您应该在 mymodel 的视图中重命名show.js.erb_show.js.erb

乐观地说,您应该能够渲染并且您可以在终端_show.js.erb中看到类似成功的内容。render _show.js.erb

但这并不意味着 rails 将 js.erb 处理为 javascript,因为您的 js.erb 中有语法错误(我绝对确定!!)。所以你也可以改变

$('.myid').html("<%= escape_javascript( render( :partial => 'myartial') ) %>");

$('.myid').html('<%= escape_javascript( render( :partial => 'myartial') ) %>');

查看我的问题以获取更多详细信息。我以前也遇到过类似的问题。它还将向您展示如何发送 ajax 调用和渲染 .js.erb 的示例。

:remote => true将发送一个 ajax 请求到line_items_path.

并且根据路由,会调用create方法,format.js会create.js.erb按照约定渲染。format.js {render :partial=> "create"}或者,如果_create.js.erb存在,我可以渲染 js.erb

于 2012-09-13T18:08:25.963 回答