2012-09-13 45 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