2012-09-13 43 views
0

我想呈现从我的资产目录中的JavaScript的部分。我发现我无法在assets目录中调用render方法。但我无法将我的ajax命令移出资产目录。所以我的问题是现在,如何将我的ajax结果传递到我的视图中的action.js文件。如何渲染资产的部分Javascript

因此,我调用一个jQuery的的onclick事件阿贾克斯:

/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--- 

那么,如何通过我心爱的结果和身份识别码到:

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

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

要呈现出来?

我在这里徘徊了很长一段时间,所以我非常感谢一些帮助!

回答

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),这样你的视图就不能使用实例变量。

+0

酷我喜欢那个答案。可悲的是我无法从中创建我的代码。我的阿贾克斯电话确实让我知道我的信息。但是,如何在成功函数中调用渲染?你能走过我吗?这个函数调用说什么用这个参数渲染_mypartial为format = js? – Jan

+0

所以show方法运行后它会执行一个JS文件(它会查找show.js.erb)。 (检查更新的答案) – YaBoyQuy

0

可以调用为MyModel控制器的方法来呈现你的部分,但部分文件名应该以下划线_

在你的榜样,这些代码render :partial => 'show'可能工作启动渲染的js,如果你把他们进入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')) %>');

退房my questions了解更多详情。我以前遇到过类似的问题。 它也会告诉你一个如何发送ajax调用和渲染.js.erb的例子。

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

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

+0

感谢您的回答。我认为那不是我问题的一部分。 '秀'不是我的部分,这是我的行动模板。我的节目前面有一个_。到目前为止还没有被调用,因为我不知道如何。为什么你认为我应该替换show.js中的“with the”? – Jan

+0

渲染部分对于ajax调用是很常见的。[检查出来](http://apidock.com/rails/ActionController/Base/render)。我认为你应该用“替换”的原因是因为我预测了一部分遗漏会出现很多“,你不能把”“放在”“里面。 您可以使用Firebug来查看ajax响应 – code4j

+0

我已经细化了我的答案:)检查一下,以帮助您了解如何渲染js – code4j