我正在尝试在rails 4中构建一个API,并且在使用respond_to :json和尝试访问html版本时遇到rails返回500错误而不是406错误的问题.
这是一个示例控制器,演示了这个问题:
class PostsController < ApplicationController
respond_to :json
def index
@posts = Post.all
end
end
Run Code Online (Sandbox Code Playgroud)
index当通过JSON访问时,我也有一个jbuilder视图.如果我尝试访问没有JSON扩展名的路由,它会尝试加载HTML模板(不存在)并返回500错误,而不是仅渲染JSON或返回406错误.
可能是什么导致了这个?欢呼任何帮助.
我正在建立一个电子商务网站(基于shopify),我正在使用多个小型angularjs应用程序来处理诸如快速购物车,愿望清单,过滤产品和一些其他小物品之类的东西.我最初使用了一个大型应用程序(具有路由和所有内容),但是当我没有完整的REST API时,它有点限制性.
我想在角度应用程序之间分享一些服务(购物车服务,所以我可以有一个快速添加按钮,将反映在迷你购物车等),但我不确定最好的方式(如果有办法)去做这件事.仅与服务共享模块不会在应用程序中保持相同的状态.
我尝试了它,但我似乎并没有更新两个应用程序之间的状态.以下是我尝试使用的javascript.这也是jsfiddle上附带的html:http://jsfiddle.net/k9KM7/1/
angular.module('test-service', [])
.service('TestService', function($window){
var text = 'Initial state';
if (!!$window.sharedService){
return $window.sharedService;
}
$window.sharedService = {
change: function(newText){
text = newText;
},
get: function(){
return text;
}
}
return $window.sharedService;
});
angular.module('app1', ['test-service'])
.controller('App1Ctrl', function($scope, TestService){
$scope.text = function(){ return TestService.get() }
$scope.change = function(){ TestService.change('app 1 activated') }
});
angular.module('app2', ['test-service'])
.controller('App2Ctrl', function($scope, TestService){
$scope.text = function(){ return TestService.get() }
$scope.change = function(){ TestService.change('app 2 activated') }
});
var app1El = …Run Code Online (Sandbox Code Playgroud) 在不必运行Web服务器的情况下,向外部REST API发送和接收请求的建议方法是什么?我似乎无法找到任何关于发出请求和解析生成的JSON的信息.到目前为止,我唯一发现的只是json解析内容(使用Cheshire库).
任何帮助将不胜感激!
我的任务是使用网络Zebra GK420T重新设计系统以打印运输标签.我已经能够完美地发送ZPL打印作业,但我似乎无法打印出unicode字符,例如西里尔字母.我使用Seagull Scientific驱动程序将lucida sans unicode字体下载到打印机,我使用以下ZPL代码进行测试:
^XA
^LH100,150
^CWT,E:TT0003M_.FNT
^CFT,30,30
^CI28
^FT0,0^FDTesting 1 2 3^FS
^FT0,50^FD?? ????????^FS
^FT0,100^B3^FDAAA001^FS
^XZ
Run Code Online (Sandbox Code Playgroud)
它将打印'Testing 1 2 3'和条形码,但它留下一个空格而不是西里尔字符.我做错了什么,比如没有逃避字符或什么东西,或者打印机有问题吗?
提前致谢
编辑:我尝试使用Zebra瑞士unicode字体,现在它打印俄语字符作为问号.我已经更新了上面的代码以反映它.
我一直在使用一个使用require.js和一个把手模板的backbone.js应用程序(我已经将AMD模块的东西添加到把手),并且只是阅读预先编译模板可以加快它的速度.
我想知道如何将预编译的模板包含在requirejs中.我有很多可以编译的模板(超过15个),所以我不确定它们是否应该都在同一个输出文件中,或者一旦编译完成它们.此外,从看起来,编译的模板共享Handlebars渲染器脚本使用的相同命名空间,所以我不确定在我的文件中需要模板时我会怎么做.
任何建议都会很棒!
我正在为一个面向iPhone的网站建立一个基本的CMS瓶,我遇到了一些麻烦.我有一个非常小的数据库,只有1个表(页面).这是模型:
class Page(db.Model):
__tablename__ = 'pages'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text, nullable=False)
parent_id = db.Column(db.Integer, db.ForeignKey("pages.id"), nullable=True)
Run Code Online (Sandbox Code Playgroud)
如您所见,对于子页面,它们只是引用parent_id字段中的另一个页面对象.我在管理面板中尝试做的是有一个嵌套的无序列表,其中所有页面都嵌套在其父页面中.我对如何做到这一点知之甚少.所有我能想到的是以下(这只会起作用(可能 - 我没有测试过)2级下来):
pages = Page.query.filter_by(parent_id=None)
for page in pages:
if Page.query.filter_by(parent_id=page.id):
page.sub_pages = Page.query.filter_by(parent_id=page.id)
Run Code Online (Sandbox Code Playgroud)
然后我会将其格式化为模板中的列表.如何使用可能超过10个嵌套页面来完成此工作?
谢谢你提前!
编辑:我看了一下,发现http://www.sqlalchemy.org/docs/orm/relationships.html#adjacency-list-relationships,所以我添加了
children = db.relationship("Page", backref=db.backref("parent", remote_side=id))
Run Code Online (Sandbox Code Playgroud)
在我的Page模型的底部.而且我正在寻找递归遍历所有内容并将其添加到对象树中.我可能没有任何意义,但这是我描述它的最佳方式
编辑2:我做了一个递归函数来运行所有页面并生成一个包含所有页面及其子项的大型嵌套字典,但它不断崩溃python所以我认为它只是一个无限循环...这里是功能
def get_tree(base_page, dest_dict):
dest_dict = { 'title': base_page.title, 'content': base_page.content }
children = base_page.children
if children:
dest_dict['children'] = {}
for child in children:
get_tree(base_page, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用flask和SQLAlchemy的扩展来创建一个删除数据库中记录的函数.问题是,它不是只删除一行,而是删除所有行.有人能告诉我我的代码有什么问题吗?
@app.route('/admin/delete/<int:page_id>', methods=['GET','POST'])
@requires_auth
def delete_page(page_id):
page = Page.query.get(page_id)
if not page:
abort(404)
if page.children:
flash('You can not delete a page with child pages. Delete them, or assign them a different parent.',
'error')
return redirect(url_for('admin_page'))
if request.method == 'POST':
Page.query.get(page_id).query.delete()
db.session.commit()
flash('Page was deleted successfully', 'success')
return redirect(url_for('admin_page'))
return render_template('admin_delete.html', page_title=page.title, page_id=page_id)
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我正在尝试使用限制和偏移查询参数来实现一种分页形式.有没有办法确保值是整数否则抛出400错误,可能使用strong_parameters?看起来这种东西会被内置到rails中,但我找不到任何东西.
我可以手动转换查询参数,但如果可能的话,我宁愿使用更多防弹的东西.
我有一个数据库模型,我需要一对多的关系和两个一对一的关系.这是我制作的模型,但它会抛出错误
class Page(Base):
__tablename__ = 'pages'
id = Column(Integer, primary_key=True)
title = Column(String(100), nullable=False)
content = Column(Text, nullable=False)
parent_id = Column(Integer, ForeignKey("pages.id"), nullable=True)
children = relationship("Page", backref=backref("parent", remote_side=id))
next_id = Column(Integer, ForeignKey("pages.id"), nullable=True)
next = relationship("Page", backref=backref("prev", remote_side=id, uselist=False))
prev_id = Column(Integer, ForeignKey("pages.id"), nullable=True)
prev = relationship("Page", backref=backref("next", remote_side=id, uselist=False))
def __init__(self, title, content, parent_id=None, next_id=None, prev_id=None):
self.title = title
self.content = content
self.parent_id = parent_id
self.next_id = next_id
self.prev_id = prev_id
def __repr__(self):
return '<Page "%r">' % self.title
Run Code Online (Sandbox Code Playgroud)
每当我尝试对数据库做任何事情时,我都会收到以下错误 …
我目前正在使用clojure中的一些REST API,我正在使用带有compojure的ring.middleware.format库来将jSON转换为clojure数据结构.
我遇到了一个很大的问题,因为发布到环形应用程序的JSON会将所有数组替换为数组中的第一个项目.IE它将把这个JSON发布到它
{
"buyer":"Test Name",
"items":[
{"qty":1,"size":"S","product":"Red T-Shirt"},
{"qty":1,"size":"M","product":"Green T-Shirt"}
],
"address":"123 Fake St",
"shipping":"express"
}
Run Code Online (Sandbox Code Playgroud)
对此
{
"buyer": "Test Name",
"items": {
"qty": 1,
"size": "M",
"product": "Green T-Shirt"
},
"address": "123 Fake St",
"shipping": "express"
}
Run Code Online (Sandbox Code Playgroud)
它适用于任何数组,包括数组是根元素时.
我在clojure中使用以下代码来返回json:
(defroutes app-routes
(GET "/"
[]
{:body test-data})
(POST "/"
{data :params}
{:body data}))
;{:body (str "Printing " (count (data :jobs)) " jobs")}))
(def app
(-> (handler/api app-routes)
(wrap-json-params)
(wrap-json-response)))
Run Code Online (Sandbox Code Playgroud)
GET路由没有正确的数组和输出问题,因此它必须是我获取数据或wrap-restful-params中间件的方式.
有任何想法吗?