我一直在研究迈克尔·哈特尔的Rails教程(顺便说一句,这是令人难以置信的令人敬畏的).
无论如何,一切都进展顺利,我几乎已经到了第10章的末尾.问题是我的rspec测试已经开始产生一些失败,我无法弄清楚出了什么问题.
第一次失败发生在我正在完成关于销毁用户的部分.考试
before :each do
@user = Factory :user
end
describe "as a non-signed-in user" do
it "should deny access" do
delete :destroy, :id => @user
response.should redirect_to(signin_path)
end
end
Run Code Online (Sandbox Code Playgroud)
给出错误:
UsersController DELETE 'destroy' as a non-signed-in user should deny access
Failure/Error: delete :destroy, :id => @user
NoMethodError:
undefined method `admin?' for nil:NilClass
# ./app/controllers/users_controller.rb:76:in `admin_user'
# ./spec/controllers/users_controller_spec.rb:308:in `block (4 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)
这是消息在users_controller中引用的代码:
def admin_user
# the error tels me that current_user = …Run Code Online (Sandbox Code Playgroud) 我试图通过合并来干扰控制器respond_with.当我这样做时,遵循Railscast中的一些指示,我得到的东西大部分都在工作.问题在于删除资源后的重定向...应该重定向到people_url...而是尝试加载特定资源.
我找到的示例代码看起来像这样......但是它尝试加载刚删除的资源失败了:
# app/controllers/people_controller.rb
class PeopleController < ApplicationController
respond_to :html, :xml
def destroy
@person = Person.find(params[:id])
flash[:notice] = 'Successfully deleted person.' if @person.destroy
respond_with(@person) # <== spec fails here
end
end
Run Code Online (Sandbox Code Playgroud)
改变最后一行respond_with(@people)也不起作用(虽然我曾希望它会...)
经过深入挖掘并尽力了解事情,我确实让事情发生了(至少看起来如此.规格传递.app功能)用这个:
respond_with(@person, :location => people_url) # <== now it works
Run Code Online (Sandbox Code Playgroud)
那么,这是处理这个问题的正确方法吗?似乎有了所有'魔法'背后的response_with它会知道删除后它不能重定向到自己?我也认为这个(7种基本的RESTful CRUD方法之一)将是非常基本和基本的,所以很多例子会比比皆是......但我找不到很多,除了那些暗示代码不起作用的代码我.
希望有人可以帮助我理解这里发生的铁轨'魔力'所以当我在路上爆炸时,我不会感到惊讶.
从两个单链表中查找相同的节点.不能使用哈希,不能是O(n ^ 2)的复杂性.
请给出一些提示.非常感谢.
我正在尝试枚举COM端口的"友好名称".随着USB串行设备在运行时连接和断开,端口可能会动态变化.
基于此问题中描述的可能方法,我尝试使用SetupDiGetClassDevs方法.
我找到了这个示例代码,但它是为旧版本的setupapi单元编写的(homepages.borland.com的原始链接当然不起作用).
我尝试使用当前JVCL(JVCL340CompleteJCL221-Build3845)中的setupapi单元,但它似乎与Delphi 7不兼容.我收到编译器错误:
if SetupDiGetDeviceRegistryProperty(DevInfoHandle,DeviceInfoData,
RegProperty,
@PropertyRegDataType,
@S1[1],RequiredSize,@RequiredSize) then begin
Run Code Online (Sandbox Code Playgroud)
在函数SetupDiGetDeviceRegistryProperty的调用中,我在参数@PropertyRegDataType和@RequiredSize上得到错误"实际和形式参数的类型必须相同" .
Delphi3000站点说该代码是在2004年编写的,适用于Delphi 7,所以我不知道为什么它现在不适用于Delphi 7,除非setupapi已经改变.是否有人熟悉setupapi可能导致这些问题的更改?
我正在测试一个简单的控制台程序.uses语句是"windows,sysutils,classes,setupAPI,Registry;"
主要计划是:
begin
ComPortStringList := SetupEnumAvailableComPorts;
for Index := 0 to ComPortStringList.Count - 1 do
writeln(ComPortStringList[Index]);
end;
end.
Run Code Online (Sandbox Code Playgroud) 我有n个列表(n <10)的格式[(ListID,[(索引,值),(索引,值),...)]并希望按索引对它们进行排序以获得以下结果
Example Input:
[('A',[(0.12, 'how'),(0.26,'are'),(0.7, 'you'),(0.9,'mike'),(1.9, "I'm fine too")]),
('B',[(1.23, 'fine'),(1.50, 'thanks'),(1.6,'and you')]),
('C',[(2.12,'good'),(2.24,'morning'),(3.13,'guys')])]
Desired Output:
[('A', ( 0.12, 'how')),
('A', ( 0.26, 'are')),
('A', ( 0.7, 'you')),
('A', ( 0.9, 'mike')),
('B',(1.23, 'fine')),
('B',(1.50, 'thanks')),
('B',(1.6,'and you')),
('A', (1.9, "I'm fine too")),
('C',(2.12,'good')),
('C',(2.24,'morning')),
('C',(3.13,'guys'))]
Run Code Online (Sandbox Code Playgroud)
我知道代码是丑陋的,特别是那些索引项[0] [ - 1] [1],但是有人可以告诉我我做错了什么吗?
content = []
max = 0.0
first = True
Done = False
finished = []
while not Done:
for item in flow:
if len(finished) == 4:
Done = …Run Code Online (Sandbox Code Playgroud) 我在Java 5环境中使用Lucene 3.0.1.我一直在研究这个问题,但文档没有给出任何直接的答案.
使用搜索方法
TopFieldDocs search(Weight weight, Filter filter, int nDocs, Sort sort)
Run Code Online (Sandbox Code Playgroud)
我总是需要提供最大数量的搜索结果nDocs.
如果我想获得所有匹配结果怎么办?这感觉就像设置nDocs到Integer.MAX_VALUE是一种哈克的方式做到这一点(并会导致速度和内存性能的下降?).
其他任何有想法的人?
什么是Bundle ID后缀?教程说要使用Bundle ID info.plist; 我可以注意到Bundle标识符info.plist,它的值是com.yourcompany.$(PRODUCT_NAME:rfc1034identifier)
我应该输入(com.yourcompany.$(PRODUCT_NAME:rfc1034identifier)Bundle ID Suffix吗?
任何人都可以推荐一个很好的资源来开始编写Emacs模式吗?具体来说,我正在研究编写语法高亮和缩进模式所需的内容.