我正在尝试从我的资源目录中的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') ) %>");
要渲染出来吗?
我正在敲打这个很长一段时间,所以我真的很感激一些帮助!
答案 0 :(得分: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来自参数),这样你的视图就无法使用实例变量。
答案 1 :(得分:0)
你可以调用mymodel控制器的方法来渲染你的部分,但是partial的文件名应该以下划线开头_
在您的示例中,如果您将js放入mymodel控制器,则这些代码render :partial => 'show'
可能适用于渲染js,您应该在mymodel视图中将show.js.erb
重命名为_show.js.erb
。< / p>
要乐观,您应该能够呈现_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') ) %>');
查看my questions了解详情。我之前遇到过类似的问题。 它还将向您展示如何发送ajax调用并呈现.js.erb。
:remote => true
会向line_items_path
发送ajax请求。
根据路由,它将调用create方法,format.js将按惯例呈现create.js.erb
。或者,如果存在format.js {render :partial=> "create"}
_create.js.erb
呈现js.erb