rails3:如何将json数据渲染到.js视图?

时间:2012-01-14 01:06:53

标签: ruby-on-rails-3 json rails-3.1

我尝试按照此answer中的说明在.js.erb文件中呈现json数据。但是我得到了这个错误:

ActionView::MissingTemplate (Missing template activities/json, application/json with {:handlers=>[:erb, :builder], :formats=>[:js, :html], :locale=>[:en, :en]}.

我有大量数据要发送给用户,因此我想以json而不是text / html发送。

这是我的控制器'some_controller.rb':

def some_action
    @hash = ...
    @var = ...
    .
    .

    respond_to do |format|
        format.js { render :json }
    end
end

这是我在views / some_controller / some_action.js.erb中的观点:

$("#some_div").html("<%=j render :partial => 'some_controller/another_action' %>");

这是我的another_action.html.erb:

<%= self.formats = ["html"] %>
Var1 = <%= @var1 %>
Hash1 = <%= @hash1.inspect %>

以上链接中的答案是错误的吗?我们不能将json数据发送到js.erb文件吗?我尝试使用.to_json转换变量和哈希值。例如:

@hash1 = someMethod(someParams).to_json

但@ hash1在我的最终html.erb中呈现为一个字符串,当然无法解析!有没有我做错了或错过了什么?

此外,没有可用于在轨道中进行json渲染的教程,有人可以提供一些很好的链接来学习和json和rails吗?非常感谢帮助。提前谢谢。

谢谢你, 的pR

1 个答案:

答案 0 :(得分:0)

渲染JSON并不需要.js.erb文件。您需要做的就是

respond_to do |format|
  format.html # renders .html.erb
  format.json { render :json => {:hash => @hash, :var => @var} }
end

或类似的东西。