2012-08-17 64 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") %>'); 

不确定这是最好的方法,但它对我来说很有用。