加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 如何让sencha架构师从rails中读取json

发布时间:2020-12-17 02:03:20 所属栏目:百科 来源:网络整理
导读:我有一个 Ruby on Rails 3新闻应用程序.它需要标题,一些内容和图像附件(使用回形针宝石).我正在使用RABL gem来提供一个 JSON feed的Sencha Architect项目. 问题是Sencha Architect无法读取JSON url.当我尝试将数据加载到商店时,我收到一条非常无益的消息,说
我有一个 Ruby on Rails 3新闻应用程序.它需要标题,一些内容和图像附件(使用回形针宝石).我正在使用RABL gem来提供一个 JSON feed的Sencha Architect项目.

问题是Sencha Architect无法读取JSON url.当我尝试将数据加载到商店时,我收到一条非常无益的消息,说“无法使用提供的配置加载数据”和一个链接以打开浏览器中的URL(打开就好了). Sencha Architect是否有某个日志提供有关此错误的更多信息?

以下是RABL文件:

# show.rabl
object @article
attributes :title,:body
node(:mobile_url) { |article| article.image.url(:mobile,false) }
node(:tablet_url) { |article| article.image.url(:tablet,false) }
node(:original_url) { |article| article.image.url(:original,false) }

# index.rabl
collection @articles
extends "articles/show"

RABL默认情况下不提供内容类型,所以我在文章控制器中有这个:

before_filter :default_format_json

def default_format_json
  if(request.headers["HTTP_ACCEPT"].nil? && params[:format].nil?)
    request.format = "json"
  end
end

这是Architect生成的代码,用于显示我使用的配置选项:

# Stories store
Ext.define('MyApp.store.Stories',{
    extend: 'Ext.data.Store',requires: [
        'MyApp.model.Story'
    ],config: {
        autoLoad: true,model: 'MyApp.model.Story',storeId: 'Stories',proxy: {
            type: 'jsonp',url: 'https://feedr.org.uk/articles.json',reader: {
                type: 'json',rootProperty: 'article'
            }
        }
    }
});

# Story model
Ext.define('MyApp.model.Story',{
    extend: 'Ext.data.Model',config: {
        fields: [
            {
                name: 'title'
            },{
                name: 'body'
            },{
                name: 'mobile_url'
            },{
                name: 'tablet_url'
            }
        ]
    }
});

如何让Sencha Architect读取我的JSON数据?非常感谢您提供的任何帮助.

解决方法

好吧,事实证明Sencha配置没有问题,问题出在我的rails应用程序上.我正在使用RABL gem生成Json响应.需要将RABL配置为以初始化程序的形式生成JsonP响应,如下所示:

# config/initializers/rabl_init.rb
Rabl.configure do |config|
  config.include_json_root = false
  config.include_xml_root  = false
  config.enable_json_callbacks = true
end

重要的选项是enable_json_callbacks = true.它导致RABL作为我的Sencha应用程序可以理解的JsonP提供响应.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读