将sql查询中的JSON响应分配给Rails中的变量

时间:2013-12-28 04:55:56

标签: mysql ruby-on-rails json

我正在尝试在我的rails应用程序中查询包含吉他标签存档的mysql数据库。我只是想查询数据库,将每个标签的id,artist,song和url分配给我的TabsController中的变量,以显示在我的tab.html.erb视图中。这是我的代码:

    class TabsController < ApplicationController

        def show
           @tabs = Tab.find_by_sql("Select * from gp where artist='led zeppelin'")


           respond_to do |format|
             format.html # show.html.erb
             format.json { render json: @tabs} #  

           end  
        end

     end

我的查询成功,在我看来它会显示所有标签的json响应。我的挑战是将吉他标签id,艺术家,歌曲和网址分配给不同的变量。我觉得解决方案很简单,但我很难过。

2 个答案:

答案 0 :(得分:0)

您告诉浏览器响应格式将是json,因此您将无法以不同方式格式化。如果您只是想显示所有标签,为什么不让您的操作更简单:

def show
  @tabs = Tab.find_by_sql("Select * from gp where artist='led zeppelin'")
end

然后在show.html.erb中它看起来像(我假设你的数据结构是什么)

<% @tabs.each do |tab| %>
  ID: <%= tab.id %>
  Artist: <%= tab.artist %>
  Song: <%= tab.song %>
  URL: <%= tab.url %>
<% end %>

答案 1 :(得分:0)

class TabsController < ApplicationController
    def show
       @tabs = Tab.find_by_sql("Select * from gp where artist='led zeppelin'")


       respond_to do |format|
         format.html # show.html.erb
         format.json { render json: @tabs.map{|t| {:id => t.id, :artist => t.artist, ...}}} 
       end  
    end
 end