小编Soo*_*uNe的帖子

测试ApplicationController过滤器,Rails

我正在尝试使用rspec来测试我在ApplicationController中的过滤器.

spec/controllers/application_controller_spec.rb我有:

require 'spec_helper'
describe ApplicationController do
  it 'removes the flash after xhr requests' do      
      controller.stub!(:ajaxaction).and_return(flash[:notice]='FLASHNOTICE')
      controller.stub!(:regularaction).and_return()
      xhr :get, :ajaxaction
      flash[:notice].should == 'FLASHNOTICE'
      get :regularaction
      flash[:notice].should be_nil
  end
end
Run Code Online (Sandbox Code Playgroud)

我的目的是测试模拟设置闪存的ajax动作,然后在下一个请求中验证闪存已被清除.

我收到路由错误:

 Failure/Error: xhr :get, :ajaxaction
 ActionController::RoutingError:
   No route matches {:controller=>"application", :action=>"ajaxaction"}
Run Code Online (Sandbox Code Playgroud)

但是,我希望我试图测试这个有多少错误.

作为参考,过滤器被调用ApplicationController为:

  after_filter :no_xhr_flashes

  def no_xhr_flashes
    flash.discard if request.xhr?
  end
Run Code Online (Sandbox Code Playgroud)

如何创建模拟方法ApplicationController来测试应用程序范围的过滤器?

unit-testing rspec ruby-on-rails ruby-on-rails-3

5
推荐指数
1
解决办法
2449
查看次数

Xcode模板<< date >>格式

我正在编写一个自定义的Xcode模板,我想改变<<date>>格式化的方式.

例如:

//  Created by «FULLUSERNAME» on «DATE».
//  Copyright «YEAR» «ORGANIZATIONNAME». All rights reserved.
Run Code Online (Sandbox Code Playgroud)

如果今天创建的文件将填写为:

//  Created by SooDesuNe on 2/24/2010.
//  Copyright 2010 MyOrganization. All rights reserved.
Run Code Online (Sandbox Code Playgroud)

以任何"所有数字"格式格式化的日期会引起很多混淆,因为ISO和JIS编写相同日期的方式是24/2/2010.这个月的第24天很清楚,但在本月的前12天不太清楚.

我想要x代码填充<<date>>像:

//  Created by SooDesuNe on 24-Feb-2010.
//  Copyright 2010 MyOrganization. All rights reserved.
Run Code Online (Sandbox Code Playgroud)

因为这种方式没有歧义.有谁知道如何更改日期格式?

xcode templates xcode-template

4
推荐指数
2
解决办法
1840
查看次数

Rails嵌套模型 - 删除关联

什么相当于<%= f.hidden_field :_destroy %>nullify而不是毁灭?(即我只是将它从关联中删除,但我不想破坏它).

一个示例情况是:

class Foo < ActiveRecord::Base
  has_many :bar, :dependent=>:nullify, :autosave=>true
  accepts_nested_attributes_for :bar, :reject_if => proc { |attributes| attributes.all? {|k,v| v.blank?} }


class Bar < ActiveRecord::Base
  belongs_to :foo
Run Code Online (Sandbox Code Playgroud)

在Foo中edit.html.erb:

<%= f.fields_for :bar do |builder| %>
   <%= builder.some_rails_helper %>
   <%= builder.hidden_field :_remove  #<-- set value to 1 to destroy, but how to unassociate?%> 
<% end %>
Run Code Online (Sandbox Code Playgroud)

对解决方案的一个小修改

def remove
  #!self.foo_id.nil? should be:
  false #this way newly created objects aren't destroyed, and neither are existing ones. …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails nested-attributes

4
推荐指数
1
解决办法
1276
查看次数

Ruby Class方法或Constant,最佳实践

我的一个ruby类从一个相当大的本地XML文件中提取数据,该文件只会随着新部署而改变.

在这种情况下,最佳做法是将文档保持为常量,例如:

class Product 
  XML_DOC = Nokogiri::XML(open("#{Rails.root}/myxmlfile.xml"))
end
Run Code Online (Sandbox Code Playgroud)

或者通过类方法访问文档,例如:

class Product 
 self.xml_doc
    Nokogiri::XML(open("#{Rails.root}/myxmlfile.xml"))
  end
end
Run Code Online (Sandbox Code Playgroud)

我认为类方法可能是要走的路,因为在测试中模拟会更容易,但是什么被认为是保持像这样的内存文件的最佳实践?

ruby class-constants

4
推荐指数
1
解决办法
1118
查看次数

TCP连接似乎接收不完整的数据

我已经设置了一个简单的TCP文件传输.一切似乎都可以正常工作,除了收到的文件大小偶尔比发送的文件小.似乎没有任何模式的接收文件的大小.

(在下面的代码中,请注意典型的客户端/服务器卷是相反的)我的客户端代码如下:

#define kMaxBacklog (5)
// fill out the sockadd_in for the server
struct sockaddr_in servAdddress;
//memcpy() to fill in the sockaddr

//setup the socket
int sockd, returnStatus;    
sockd = socket(AF_INET, SOCK_STREAM, 0);
if (sockd == -1)
    NSLog(@"could not create client socket");
else
    NSLog(@"created client socket");

returnStatus = connect(sockd, (struct sockaddr*)&servAdddress, sizeof(servAdddress));
if (returnStatus == -1)
    NSLog(@"could not connect to server - errno:%i", errno);
else
    NSLog(@"connected to server"); 

NSData *dataWithHeader = [self getDataToSend];
returnStatus = send(sockd, [dataWithHeader bytes], [dataWithHeader length], …
Run Code Online (Sandbox Code Playgroud)

unix sockets networking tcp

3
推荐指数
1
解决办法
3623
查看次数

Tkinter画布不显示

我正在尝试学习一些Python和Tkinter.下面的示例代码旨在在屏幕上放置两个窗口,一些按钮和一个带有图像的Canvas,并在其上绘制一些线条.

窗口和按钮看起来很好,但是我没有看到画布图像或画布线.我很感激帮助找出制作画布的必要条件.

from Tkinter import *
import Image, ImageTk

class App:

    def __init__(self, master):

    def scrollWheelClicked(event):
        print "Wheel wheeled"

    frame = Frame(master)
    frame.pack()
    self.button = Button(frame, text = "QUIT", fg="red", command=frame.quit)
    self.button.pack(side=LEFT)

    self.hi_there = Button(frame, text="Hello", command=self.say_hi)
    self.hi_there.pack(side=LEFT)

    top = Toplevel()
    canvas = Canvas(master=top, width=600, height=600)

    image = Image.open("c:\lena.jpg")
    photo = ImageTk.PhotoImage(image)
    item = canvas.create_image(0, 0, image=photo)

    canvas.create_line(0, 0, 200, 100)
    canvas.create_line(0, 100, 200, 0, fill="red", dash=(4, 4))
    canvas.create_rectangle(50, 25, 150, 75, fill="blue")

    canvas.pack

    testBtn = Button(top, text = "test …
Run Code Online (Sandbox Code Playgroud)

python tkinter tkinter-canvas

3
推荐指数
1
解决办法
7653
查看次数

更具体,一般的Objective-C内存管理

我读到的关于objective-c内存管理的所有内容都让人觉得难以置信.用大家的意思来说:"释放你分配,保留或复制的任何内容".但我认为还有一些更具体的案例并不那么明确.以下是一些示例情况.每个的正确程序是什么:

情况#1:

Foo *foo = [[foo alloc] init];
Foo *fooToo = [[[foo alloc] init] autorelease];

foo = fooToo;
Run Code Online (Sandbox Code Playgroud)

foo在被分配给fooToo之前是否需要被释放?

情况#2 当我做以下事情时,我似乎遇到了很多崩溃:(.为了方便而将.h和.m混合在一起)

Foo *foo;
@property (nonatomic, retain) Foo *foo;
@synthesize foo;

-(id)init{
self = [super init];
}

-(void)dealloc{
[super dealloc];
[foo release];
}
Run Code Online (Sandbox Code Playgroud)

我经常被告知"总是在dealloc中释放你设置的保留属性".但如果像我所示的那样完成,这将会崩溃.

情况#3 类似的情况也将崩溃:( .h和.m为了方便而混合在一起)

Foo *foo;
@property (nonatomic, retain) Foo *foo;
@synthesize foo;

-(id)init{
self = [super init];
self.foo = nil;
}

-(void)dealloc{
[super dealloc];
[foo release];
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当我的代码归结为dealloc时,foo不是== nil.

情况#4 最后,只是一个问题,人们在决定之间使用什么样的一般思维过程

 self.foo = bar;
Run Code Online (Sandbox Code Playgroud)

 foo = …
Run Code Online (Sandbox Code Playgroud)

memory-management objective-c

2
推荐指数
1
解决办法
390
查看次数

iPhone 3.0上的UIColor限制或错误

我正在使用一些颜色,它们似乎根本不正确.附加的图像显示了预期的结果,实际的模拟器和设备上的结果.正如你所看到的那样,Gimp认为RGB(0,16,60)是什么以及我得到的输出是什么[UIColor colorWithRed:0.0 green:16.0 blue:60.0 alpha:1.0];

由于我的alpha是1.0,我不相信我的背景有任何混色.

欢迎任何关于这里发生的事情的建议.alt text http://img200.imageshack.us/img200/3710/picture4uu.png

iPhone结果:

alt text http://img33.imageshack.us/img33/9264/picture3xb.png

iphone cocoa-touch uicolor

2
推荐指数
1
解决办法
312
查看次数

使用PHP的simpleXML解析XML

我正在学习如何使用PHP的简单XML解析XML.我的代码是:

<?php
$xmlSource = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>    <Document xmlns=\"http://www.apple.com/itms/\" artistId=\"329313804\" browsePath=\"/36/6407\" genreId=\"6507\">    <iTunes> myApp </iTunes> </Document>";

$xml = new SimpleXMLElement($xmlSource);

$results = $xml->xpath("/Document/iTunes");
foreach ($results as $result){
 echo $result.PHP_EOL;  
}

print_r($result);
?>
Run Code Online (Sandbox Code Playgroud)

当它运行时,它返回一个空白屏幕,没有错误.如果我从Document标签中删除所有属性,它将返回:

myApp SimpleXMLElement Object ( [0] => myApp )
Run Code Online (Sandbox Code Playgroud)

这是预期的结果.

我究竟做错了什么?请注意,我无法控制XML源,因为它来自Apple.

php itunes simplexml app-store

2
推荐指数
1
解决办法
3189
查看次数

Ruby on Rails用户日期输入

我一直在寻找一个好的宝石/插件,以允许直观的用户输入日期(即从弹出日历中选择日期).

calendardateselect看起来非常好,但它不再处于活动开发状态,不再正确安装.

我发现了其他几个,但它们都很陈旧.什么是Stack Overflow用户在rails中使用日期输入?

每个@bjg和@Fortuity jQuery UI是我决定去的方向.启动和运行有点复杂,所以我为其他人写了一个简短的操作方法.

calendar ruby-on-rails

2
推荐指数
1
解决办法
3974
查看次数

在编辑字段中格式化Rails

可以在"编辑"屏幕上使用rails格式助手吗?格式助手(number_to_currency,number_to_percent)非常适合索引/显示,但我没有看到如何在编辑期间应用它们.我有一个自定义heler格式化日期:

def my_date_helper(datetime)
    datetime.nil? ? "" : datetime.strf('%d-%b-%Y')
end
Run Code Online (Sandbox Code Playgroud)

例如,如果我有一个starts_at属性,即用户使用jQuery日期选择器进行交互,则<%= f.text_field :starts_at %>rails 中edit.html.erb中的值将被格式化为:

2011/12/19 00:00:00

我希望向用户呈现一致的格式,因此我想应用我在show/index中使用的相同格式助手,以便编辑文本字段显示如下格式:

19-Jan-2011

ruby-on-rails

1
推荐指数
1
解决办法
929
查看次数