【问题标题】:turn database into parsed json in rails在rails中将数据库转换为解析的json
【发布时间】:2016-01-10 11:00:57
【问题描述】:

所以我有一个充满事件的桌子。我的控制器调用看起来像这样

 @gig = Gigtable.where(eventurl: (params[:gigurl])).all
 @gigjson = @gig.to_json

我不确定我这样做是否正确。我有一个ajax调用。我想要 json (它应该是它自己的一组 {} 中的每一行,希望只有当 eventid 有一个来自 event table 的 url 称为 gigurl 时才被拉入 ajax 控制器(它没有被传递还没有通过。我也不知道该怎么做。

@gigjson 将所有数据库作为 json 传回(通过 byebug 检查)。

基本上我需要将 gigurl 从视图传递到控制器。 (其他一切都是这样工作的。我的另一个表有像这样传递到 ajax 的 url 的 id

'' + link + 'data'

我想拥有它,所以这样的事情是可以实现的

urlcall 将是(在 ajax 中)

`'' + gigjson + '这里的控制器方法?'

这就是我到目前为止的所有代码。路由中没有任何内容,ajax 中没有任何内容,只是一个标准的 ajax 调用。

【问题讨论】:

    标签: ruby-on-rails json ajax


    【解决方案1】:

    基本上你需要:

    1. 定义路线;
    2. 从控制器以 JSON 格式呈现数据。

    对于第 1 步,假设您的 AJAX 调用使用 GET,您可以将其添加到您的 routes.rb 文件中:

    get 'gigjson/:gigurl', to: 'your_controller#your_action', defaults: { format: 'json' }
    

    我已将 JSON 定义为默认格式以使事情变得更简单,因此您无需更改 JS 调用。对于第 2 步,在您的控制器中,您可以按如下方式重写您的操作(我已删除无用的实例变量):

    render :json, Gigtable.where(eventurl: (params[:gigurl]))
    

    您不需要添加.all,您已经指定了where 子句。

    此时您可以使用网址http://your_server.com/gigjson/GIGURL,将GIGURL替换为您需要的参数。

    【讨论】:

    • 嘿taglia,谢谢你,GIGURL,这将如何通过?那是我感到困惑的事情之一。它是 ajax 中的部分,其中 url 调用将是 '/gigjson' + GIGURL,因为它会根据其所在的页面而变化
    • 我不明白你的问题。 GIGURL 将作为请求中的参数传递。所以如果你调用'server.com/gigjson/whatever123',params[:gigurl] 将等于'whatever123'。如果您愿意,也可以从路由中删除:gigurl,并调用 URL 'gigjson?gigurl=whatever123'。控制器没有变化。
    猜你喜欢
    • 1970-01-01
    • 2015-02-02
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多