2012-08-17 65 views
2

我想呈現的部分爲Ajax請求,但我怎麼也找不到它使用Ruby on Rails的做...Ruby on Rails的JSON數組內呈現局部

這裏就是我的數組變量

@return = { :error => false, :response => "Added", :partial => ... } 

render :json => ActiveSupport::JSON.encode(@return) 

其中...是在部分(HTML)應該是...

方法名是方法add_item,其控制器的項目和我已經建立的項目文件夾內的文件add_item.html.erb其中有我想要傳遞給數組的HTML並使用jQuery將其添加到在DOM

我想這可以用

render :partial => "partial", :object => @object 

做,但我怎麼能加入上述的陣列呢?

+0

'render'返回HTML,對不對?你嘗試過'{:error => false,:response =>「Added」,:partial => render(:partial =>「partial」,:object => @object)}'? – Robin 2012-08-17 15:34:32

+1

@Robin我收到一個錯誤:'AbstractController :: DoubleRenderError(渲染和/或重定向在這個動作中被多次調用。請注意,您可能只能調用渲染或重定向,並且每次最多一次。也不會渲染終止動作的執行,所以如果你想在重定向後退出一個動作,你需要做一些像「redirect_to(...)並返回」。):'' – fxuser 2012-08-17 15:39:14

回答

2

解決方案:

@return = { :error => false, :response => "Added", :partial => render_to_string(:partial => "partial/path", :object => @object) } 
0

我這樣做的方式是什麼,我認爲你正在試圖做的是在add_item火ajax的消息,然後在add_item有:

def add_item 
    respond_to do |format| 
    format.js 
    end 
end 

並作出add_item.js.erb與jQuery的內容:

$('#div-for-code').html('<%= escape_javascript(render :partial => "mypartial") %>'); 

不確定這是最好的方法,但它對我來說很有用。