使用Devise 2.1.2和Rails 3.2.6
我正在做这个问答,以防万一其他人遇到这个问题,因为我发现它很少和分散的文档.
如果您尝试设置Devise为可锁定,则可能会发生此错误.
undefined local variable or method `locked_at' for [someClass]
Run Code Online (Sandbox Code Playgroud)
这意味着您的模型没有适当的属性.
先决条件:在config/initializers/devise.rb中设置以下内容
# ==> Configuration for :lockable
# Defines which strategy will be used to lock an account.
# :failed_attempts = Locks an account after a number of failed attempts to sign in.
# :none = No lock strategy. You should handle locking by yourself.
config.lock_strategy = :failed_attempts
# Defines which key will be used when locking and unlocking an account
config.unlock_keys = [ :email …Run Code Online (Sandbox Code Playgroud) 使用Simple_form 2.0.2
使用HAML的简单表单代码:
= f.input :remember_me, as: :boolean, inline_label: 'Remember me'
Run Code Online (Sandbox Code Playgroud)
但它呈现了这个:
<div class="control-group boolean optional">
<label class="boolean optional control-label" for="admin_remember_me">Remember me</label>
<div class="controls">
<input name="admin[remember_me]" type="hidden" value="0" />
<label class="checkbox"><input class="boolean optional" id="admin_remember_me" name="admin[remember_me]" type="checkbox" value="1" />Remember me</label>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
如何删除渲染的第一个标签,以便我只有内联标签?
可能是重复但我在SO上找不到具体问题,所以在这里.
我很想知道动态改变所有行的高度,通常是因为你不知道用于标签的NSString的长度.
我知道您必须使用此委托方法来更改行高:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)
问题是这个委托方法在创建单元格之前调用(即之前调用cellForRowAtIndexPath).
所以,我想到的是创建一个模拟单元格viewWillAppear和一个方法,将单元格高度添加到映射到表视图的数据源(在我的情况下也是一个数组)的数组中.
viewWillAppear 实现这一个获得高度的重要方法:
[NSString sizeWithFont: constrainedToSize: lineBreakMode:]
然后在heightForRowAtIndexPath我可以像这样返回单元格高度:
//cellHeights is an ivar populated in viewWillAppear
return [[cellHeights objectAtIndex:indexPath.row] floatValue];
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好的方法来动态改变行高?
我意识到这会降低大量行的性能(我相信大于1000).但就我而言,我的行不会接近那个数字.因此,性能损失可以忽略不计.
提前致谢!
我已经分组了Devise::RegistrationsController.在我的例子中,子类控制器是AdminRegistrationsController.
但是,例如,当我注册新的管理员时,会flash显示以下消息:
translation missing: en.devise.admin_registrations.admin.signed_up
我已经验证了存在的条目config/locales/devise.en.yml.这是片段:
en:
devise:
registrations:
signed_up: 'Welcome! You have signed up successfully.'
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我有一个UIView从笔尖加载的子类,我无法在它周围画一个阴影.我试图在整个视图周围出现一个阴影已经有一段时间了.我选择将它放在它自己的子层中,以便以后简化动画.这是代码:
-(void)awakeFromNib
{
self.clipsToBounds = NO;
// set up the shadow layer
CALayer *shadow = [CALayer layer];
shadow.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.bounds.size.width, self.bounds.size.height);
shadow.shadowColor = [UIColor blueColor].CGColor;
shadow.shadowRadius = 15.0;
shadow.opacity = 1.0;
[self.layer addSublayer:shadow];
// I set this property so I have access to it later to more easily animate it.
self.shadowLayer = shadow;
}
Run Code Online (Sandbox Code Playgroud)
当我NSLog的shadowLayer属性,坐标和框架是正确的.它与它支持的视图相匹配.
我还设置了边框颜色和角半径self.layer,它显示正确.如果我把阴影放在self.layer它上面,但它包含了我父母的所有子视图UIView.
任何帮助是极大的赞赏.
所以我正在学习Rails并完成Michael Hartl的教程.
当我部署到Heroku时,我得到了臭名昭着的"我们很抱歉,但出了点问题."
该应用程序在本地开发服务器上运行正常.
Heroku日志说:
2012-06-27T15:31:47+00:00 app[web.1]: Completed 500 Internal Server Error in 112ms
2012-06-27T15:31:47+00:00 app[web.1]:
2012-06-27T15:31:47+00:00 app[web.1]: * "/app/app/views"
2012-06-27T15:31:47+00:00 app[web.1]: ActionView::Template::Error (Missing partial layouts/header with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder]}. Searched in:
2012-06-27T15:31:47+00:00 app[web.1]: ):
2012-06-27T15:31:47+00:00 app[web.1]: 11: </head>
2012-06-27T15:31:47+00:00 app[web.1]: 12: <body>
2012-06-27T15:31:47+00:00 app[web.1]: 13:
2012-06-27T15:31:47+00:00 app[web.1]: 14: <%= render 'layouts/header' %>
2012-06-27T15:31:47+00:00 app[web.1]: 15:
2012-06-27T15:31:47+00:00 app[web.1]: 16: <div class="container">
2012-06-27T15:31:47+00:00 app[web.1]: app/views/layouts/application.html.erb:14:in `_app_views_layouts_application_html_erb__112987114114249875_31386580'
2012-06-27T15:31:47+00:00 app[web.1]: 17: <% flash.each do |key, value| %>
Run Code Online (Sandbox Code Playgroud)
如果我正确读取它,它正在查找/app/app/views标题部分.这是错的 - 应该是 …
我的目标:当应用程序通过冗长的循环时,显示带有确定的NSProgressIndicator的自定义工作表.我希望工作表是应用程序模式,而不是文档模式.用户无法关闭模态表.他们必须等待应用程序完成循环处理.
问题:我无法将自定义工作表附加到窗口.它显示为缺少窗口标题栏的单独窗口(如表单所示).此外,当循环结束时,纸张不会释放(不会关闭).
我有两个单独的nib文件用于工作表和主应用程序窗口,还有两个控制器类用于每个窗口.
以下是相关信息:自定义工作表的控制器实现:
@implementation ProgressSheetController //subclass of NSPanel
-(void)showProgressSheet:(NSWindow *)window
{
//progressPanel is an IBOutlet to the NSPanel
if(!progressPanel)
[NSBundle loadNibNamed:@"ProgressPanel" owner:self];
[NSApp beginSheet: progressPanel
modalForWindow: window
modalDelegate: nil
didEndSelector: nil
contextInfo: nil];
//modalSession is an instance variable
modalSession = [NSApp beginModalSessionForWindow:progressPanel];
[NSApp runModalSession:modalSession];
}
-(void)removeProgressSheet
{
[NSApp endModalSession:modalSession];
[NSApp endSheet:progressPanel];
[progressPanel orderOut:nil];
}
//some other methods
@end
Run Code Online (Sandbox Code Playgroud)
主应用程序窗口的实现.testFiles方法是一个连接到按钮的IBAction.
@implementation MainWindowViewController //subclass of NSObject
-(IBAction)testFiles:(id)sender;
{
//filesToTest is a mutable array instance variable
int count = [filesToTest count];
float …Run Code Online (Sandbox Code Playgroud) 对我上一个问题的后续跟进: 如何从OpenSSL加密数据中获取初始化向量(iv)
我正在使用OpenSSL命令行实用程序来加密字符串,然后尝试<CommonCrypto/CommonCryptor.h>用来解密iPhone上的字符串.使用Dropbox SDK,将带有加密字符串的xml文件加载到iPhone上,我的应用程序尝试解析和解密此文件中的字符串.
这是openssl命令的一个例子:
printf %s "Hello" | openssl enc -aes-128-cbc -K 00ff349830193845af43984758690213 -iv 0 -base64
Run Code Online (Sandbox Code Playgroud)
上面的base 64字符串放在一个XML文件中,然后由app解析.
我正在使用Matt Gallagher的NSData来解码base64文本.我假设它正常工作; 我还没有找到一个测试它的好方法.(来源:http: //cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html).
这是解码加密字符串的方法.
在这种情况下,关键是NSString等于@"00ff349830193845af43984758690213".
+ (NSString *)string:(NSString *)encryptedString withAES128Key:(NSString *)key {
// decode base64, from Matt Gallagher's NSData category
NSData *b64DecodedData = [NSData dataFromBase64String:encryptedString];
NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];
// fyi, I plan to replace this later with a random iv
NSData *ivData = [@"00000000000000000000000000000000" dataUsingEncoding:NSUTF8StringEncoding];
// decrypt the string …Run Code Online (Sandbox Code Playgroud) 我想我已经完成了我的作业.
我希望我的app委托成为我的代表UITabBarController.
使用IB,我已将UITabBarController代理连接到我的应用程序代表.
App Delegate Header文件是:
@interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
Run Code Online (Sandbox Code Playgroud)
我试图实现的委托方法是:
-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
NSLog(@"shouldSelectViewController called.");
// do some stuff with viewController
return YES;
}
Run Code Online (Sandbox Code Playgroud)
我的应用代表有一个出口到UITabBarControllerIB的连接.当我这样做:
NSLog(@"tab bar controller delegate is %@", self.tabBarController.delegate);
Run Code Online (Sandbox Code Playgroud)
我得到了一个很好的结果,比如tab bar controller delegate is <MyAppDelegate: 0x6e86a30>.
我错过了什么?
Fyi,使用Rails.
特定 user = User.find(1)
这个case语句nil在返回结果时返回self.do_something_with_user.
def case_method
case self.class
when User
self.do_something_with_user # assume does not return nil
when SomeOtherClass
self.do_something_else
else
nil
end
end
user.case_method # => nil
Run Code Online (Sandbox Code Playgroud)
我错过了什么?使用pry,self.class == User返回true.
免责声明:密码学新手.
我有一个使用OpenSSL加密数据的外部进程,现在使用salt.
iPhone应用程序从服务器获取该数据,将其下载到应用程序的文档目录,并需要对其进行解密.iPhone OS不包含OpenSSL库.你可以自己构建它,但这很困难而且很棘手.由于Stackoverflow的帮助,我发现的"最简单"的解决方案是使用CommonCrypto/CommonCryptor.h它是安全框架的一部分.
但是解密数据的C函数需要iv才能正确解密.
有没有办法从加密数据中导出iv(对我而言,似乎它会否定额外的安全性)?或者我需要首先以某种方式指定iv并让iPhone应用程序知道它是什么?或者,只是不要使用盐?
Edit1:为了澄清,我正在使用OpenSSL来加密数据文件中的文本.使用OpenSSL的脚本加密文本,上传到Dropbox,然后应用程序从Dropbox下载文件,解析它,并尝试解密文本.
Edit2:是的,我正在使用带有该-pass选项的OpenSSL命令行实用程序.
我有一个UIView是UIScrollView的子视图.
我这样做是为了设置内容大小viewDidLoad(我在这个网站上找到的有用片段):
CGFloat scrollViewHeight = 0.0f;
for (UIView* view in self.scrollView.subviews)
{
scrollViewHeight += view.frame.size.height;
}
[self.scrollView setContentSize:(CGSizeMake(320, scrollViewHeight))];
Run Code Online (Sandbox Code Playgroud)
使用NSLog我确定内容大小高度大于滚动视图的高度.但是,它仍然不会滚动.(我只对垂直滚动感兴趣.)
在IB中启用了滚动,所以我错过了什么?
我有一个rspec测试失败,但在开发中,当我自己执行操作时,页面呈现正确.
这是片段:
describe "sign up process" do
let (:admin1) { FactoryGirl.create(:admin) }
describe "with valid information"
before do
visit new_admin_registration_path
fill_in "Email", with: admin1.email
fill_in "Password", with: admin1.password
fill_in "Password confirmation", with: admin1.password_confirmation
click_button "Sign up"
end
it { should have_selector('div.alert') }
end
Run Code Online (Sandbox Code Playgroud)
根本没有找到那个选择器,但我确认它在使用开发环境查看源时存在.
我希望能够做的是检查正在渲染的页面以查看我缺少的内容.有没有办法做到这一点?
ios ×6
iphone ×6
cocoa-touch ×3
cryptography ×2
encryption ×2
objective-c ×2
openssl ×2
ruby ×2
calayer ×1
cocoa ×1
cocoa-sheet ×1
delegates ×1
devise ×1
heroku ×1
macos ×1
rspec-rails ×1
rubygems ×1
simple-form ×1
uiscrollview ×1
uitableview ×1