- 博客(31)
- 资源 (8)
- 收藏
- 关注
原创 Rails修改渲染后页面代码
有时候我们可能对action渲染后的代码不太满意,这时就要做微调,虽然很少有这样的需求.可能大多数人不知道,要实现这种功能比想象的还要简单,我们只需要直接修改render之后的结果就可以了.举个栗子,在页面中使用分页时会根据当前的action名生成页面链接url,但是这是我不想要的结果.action:searchrender:indexaction:index如上,在search动作最后渲染到in
2017-01-31 09:42:39 1221
原创 Rails中使用ajax的两种方法及调试技巧
Rails这个超级强大的网站构建器为用户界面变更和交互提供了ajax操作的能力,据我所知在Rails中使用ajax有两种方法,下面为大家一一道来 ;)一.在$(document).ready中注册hook,伺机而动我们可以为html中某个元素注册回调钩子,比如在select中的选项发生改变的时候:<%= select_tag("department",options_from_collection_
2017-01-27 23:08:52 3124
原创 Rails中Model关系在Migrate的体现
如果你的两个Model有相互关系,那么你不得不到Migrate文件中添加各自对应的id,举个例子:class Staff < ActiveRecord::Base belongs_to :officeend上面定义了Staff属于Office,即员工属于一个科室,那么除了上面一行:belongs_to :office之外,我们需要在db/migrate中修改原Staff为如下内容:clas
2017-01-21 15:47:43 521
原创 Ubuntu下安装rails支持postgresql的步骤
在搞定了MacOS下的postgresql安装后,我们来看看linux下的安装,大同小异,只是某些细节稍有不同.首先更新apt-get,然后安装postgresql:sudo apt-get updatesudo apt-get install postgresql然后需要安装gem pg,不过pg是原生gem,直接install会报缺少头文件,所以我们要先安装开发库:sudo apt-get i
2017-01-20 08:41:22 1036
原创 MacOS下Rails+Nginx+SSL环境的搭建(下)
五.以Production环境部署Rails项目这里插一个题外话,我们之前是以development环境运行的rails项目,现在我们希望在实际的生产系统中跑一下看看.这是十分有必要的,应该在rails项目的早期进行生产系统的测试,否则到后面会遇到很多奇怪的问题.正常情况下在rails项目的config/environments目录中按照对于环境包含了各自对应的配置文件,我们不需要做任何修改.不过鉴
2017-01-18 19:47:47 686
原创 MacOS下Rails+Nginx+SSL环境的搭建(中)
三.配置Nginx先是修改 hosts 文件,意思是创建一个本地域名以便我们访问,比如:$ sudo subl /etc/hosts127.0.0.1 rails_project.local但是这里可以跳过,因为hosts文件中本身默认包含一个localhost本地域,所以我们如果只通过localhost访问页面,这里不需要做修改.这里我们测试一下hosts设置的是否正确,简单的ping一下就可以
2017-01-18 19:46:54 733
原创 MacOS下Rails+Nginx+SSL环境的搭建(上)
这里把主要的步骤写下来,反正我是走了不少弯路,希望由此需求的朋友们别再走类似的弯路.虽说环境是在MacOS下搭建,但是基本上和linux下的很相像,大家可以举一反三.一.安装Rails这个是最简单的,大家可以到我blog看相关文章,安装完毕后创建一个rails项目,比如名字为rails_project,这时你启动rails服务器之后rails s,应该可以在浏览器中访问如下地址的页面:http://
2017-01-18 19:45:05 744
原创 Rails多路径调用相同方法原路返回的方法
有时候可能有多条path到达同一个method,此时,我们希望在该方法完成后自动转到之前进入的path中去,其实实现起来非常简单,只需要实现如下两个方法: def redirect_back_or(default) redirect_to(session[:return_to] || default) session.delete :return_to
2017-01-17 17:27:26 731
原创 Rails关闭html_safe字符串过滤
在某些情况下我希望html的文本中包含一些空格,因为html5产生空格的方法是插入 <br />所以我可以这么写:text = "hello world!<br />hello hopy!!!"下面我在html.erb里这么写:<h1><%= text%></h1>在浏览器打开html你会发现,你得到的不是想要的结果,你会看到:hello world!<br />hello hopy!!!而不是
2017-01-17 16:31:06 1273
原创 Rails报找不到sanitize和raw方法的解决
以下一段代码作用是对html字符串做过滤作用:sanitize(raw(content.split.map{ |s| wrap_long_string(s) }.join(' ')))不过实际会报错,我的rails环境是4.0.6,故意没有升级到最新.首先raw被标记为废弃的,你可以用String#html_safe来代替.其次sanitize前面需要指明作用域为ActionController::
2017-01-17 16:11:05 631
原创 Ruby 2.x 命名参数特性简介
我以前曾有一个梦想,就是我的爹是李嘉诚…,那个…,不是啦,我的梦想是ruby像ObjC,或是现在的swift那样给方法提供命名参数.之前的ruby只能用hash来模拟这个行为,不过你没法很容易的定义默认值了…在 Ruby 2.0之后,终于有了命名参数这个特性,你可以轻松的设置每个参数的默认值啦:def foo(name:,size:)end#这样调用foo(name:"hopy",size:1
2017-01-15 09:51:06 1849
原创 Ruby方法参数默认值的一个小技巧在Rails中的应用
我们需要生成一个gravatar格式的html.image标示,于是写了如下方法:def gravatar_for(user) gravatar_id = Digest::MD5::hexdigest(user.email.downcase) gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_i
2017-01-15 09:39:29 3007
原创 Rails rspec测试报patch user_path(user) param not found: user的解决
其实道理很简单,就是在User控制器的update方法中有一个验证:def user_params params.require(:user).permit(:name,:email,:password,:password_confirmation)end如果params里面没有user,或者user里没有上面那些指定的属性名则中断代码,而在测试里引发这一错误的是以下一句:before
2017-01-14 21:38:46 1807
原创 MacOS下postgresql数据库密码的那些事
如果你是第一次玩postgresql数据库,你会发现你给role或者user明明设置了密码,但在登录的时候毛都不用输入,直接就进去了,怎么那么爽快!?虽然爽快,但貌似不该这样啊.其实这些都和一个重要的文件有关,它就是pg_hba.conf!那么这个文件在哪呢?如果你是mac或是linux系统,你可以通过如下方式找到这个文件:ps aux|grep postgres//你会发现输出其中有-D的一行
2017-01-13 19:38:16 4735
原创 MacOS中安装native gem报找不到stdio.h的解决
这是因为你没有安装xcode开发包,你可以在控制台输入:xcode-select --install安装即可.
2017-01-13 13:33:15 1195
原创 MacOS下rvm安装新版本ruby时报curl SSL证书错误的解决
首先将rvm升级至最新版本:rvm update然后更新证书:rvm osx-ssl-certs update all最后更新gems:rvm rubygems latest
2017-01-13 13:30:42 1889
原创 MacOS上brew提示cannot load such file mach
这个问题可能由于MacOS从10.11升级到10.12所导致,运行brew命令会提示如下错误:/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- ma
2017-01-13 09:20:55 3665
原创 Rails做rspec测试时出现bcrypt错误的解决
在用rspec做测试的时候,出现了如下一句错误:You don't have bcrypt-ruby installed in your application. Please add it to your Gemfile and run bundle install原来在Gemfile中写的是:gem 'bcrypt-ruby' 因为后面没指定版本号所以默认安装的是最新版,但是不巧的是在bundl
2017-01-12 17:09:39 1052
原创 MacOS下对postgresql的简单管理操作
如何安装在另一篇blog中有述,这里不再赘述.本篇简单说一下安装完postgresql之后的一些管理和查询操作.首先安装完postgresql之后需要初始化数据库:initdb /usr/local/var/postgres -E utf8如果你不初始化,那么db的路径就是上面的/usr/local/var/postgres(在MacOS 10.11上),数据库编码类型就是utf8.我们可以设置开机
2017-01-12 13:17:20 2644
原创 Rails里rake db:migrate出现undefined method last_comment问题的解决
这个问题和特定的rake版本有关,因为Rails要使用rake的last_comment方法在较新版本的rake中已被废弃,所以很多人卸载了新版本的rake去安装旧版本的rake.这样也能解决问题,但显然用旧的东西感觉不那么好.好在你遇到的是ruby语言,所以没有什么不可能了,我们只需要写一个模块然后包装last_comment方法到rake中对应的新方法中即可,打开Rakefile,在其中新建一个
2017-01-12 11:19:07 2072
原创 Rails中rspec测试xxx_path调用失败的解决
首先要想生成类似于home_path,about_path之类的方法,必须在路由文件中添加对应方法: match '/help',to:"static_pages#help",via:'get' get '/about',to:'static_pages#about' get '/contact',to:'static_pages#contact'用match和get都可以,但
2017-01-12 10:02:27 1208
原创 Rails 4.0 bundle exec rspec spec/requests/xxx 测试失败的解决
rails项目没有使用默认的单元测试包,而是使用了rspec-rails来测试.按照文档说明首先生成对应的测试文件:rails generate integration_test xxx invoke rspec create spec/requests/xxx.rb然后在spec/spec_helper.rb中添加以下一句:RSpec.configure do |c
2017-01-11 17:15:54 1677
原创 Rails在MacOS上搭建Heroku部署环境
heroku只是用postgresql,而不能兼容sqlite数据库.所以很重要的一步就是在部署实际产品的时候将数据库类型修改为postgresql,否则你将无法push到heroku上去.heroku官方的说明在这里:https://devcenter.heroku.com/articles/sqlite3你可以在rails创建的时候就默认使用postgresql数据库:rails new you
2017-01-11 13:35:58 1641
原创 MacOS下安装rvm的几点注意
如果用以下链接无法下载的话:curl -sSL https://get.rvm.io | bash -s stable#或者curl -L https://rvm.io | bash -s stable那么你可能需要直接从git中下载安装,那么首先你要装gpg,gpg是一个加密解密的包,MacOS中默认是不安装的,我们可以到 https://gpgtools.org 去下载,然后install.
2017-01-11 05:18:07 3705 1
原创 如何加快Bundle的处理速度
说起bundle,就要说到Gemfile.Gemfile用来定义你的应用依赖哪些第三方包,bundle根据该配置去寻找这些包.而Bundle相当于多个gem批处理运行,它会根据Gemfile中的依赖自动帮我们下载并安装各个包,以及它们所依赖的其它包.在Gemfile中里有一个source字段存放着远程包下载的地址,一般来说是:https://rubygems.org不过在国内有时速度很慢,我们可以换
2017-01-10 15:36:15 979
原创 CoreData数据验证失败仍然插入context的解决(三)
在前两篇系列博文中,我们讨论了该问题的几种解决办法.随着对CoreData的深入学习,又发现一个更简单的方法.我们保持原先的创建managedObject方法不变,只是略微修改一下插入的代码就可以了.首先是托管对象创建的代码:if let entity = NSEntityDescription.entity(forEntityName: "KsMain", in: containerVC.mana
2017-01-10 08:18:35 986
翻译 Mutable Access of To-Many Relationships
你可能注意到我们从1对多关系中取得的NSSet是不可修改的.增加一个对象到to-many不可修改的关系的NSSet需要创建一个NSSet可修改的副本,然后添加一个新的对象到NSMutableSet中,然后将NSMutableSet设置回原来的父对象中去.这是一个痛苦的过程,而且幸运的是毫无必要的!当你需要添加一个对象到to-many关系时,我们可以使用mutableSetValueForKey代替v
2017-01-09 14:26:31 908
翻译 Understanding Primitive Access
这里应该注意到通过KVC访问特性(attribute)或者属性(properties)将会触发KVO通知,当发生改变的时候.在某些情况下我们不希望它发生或希望它迟点发生.此时,我们可以通过-primitiveValueForKey和-setPrimitiveValueForKey方法来访问.这两个方法和-valueForKey以及-setVAlue:forKey是相同的,但是它们并不触发KVO通知.
2017-01-09 11:22:44 783
原创 CoreData数据验证失败仍然插入context的解决(二)
在之前的一篇 博文 里我们给出了两种解决办法:第一种方法预先不指定context,在实际插入时在指定第二种方法是在验证失败时重置context中的内容其实CoreData自身还提供了另一种方法,就是context子对象.对于一个context来说,默认其parent属性指向永久存储协调器(NSPersistentStoreCoordinator),不过我们可以让其指向另一个context,这样
2017-01-06 14:13:44 954
原创 CoreData应用UI活动指示器不显示的解决
一只简单的CoreData应用,UI界面左上角按钮触发一段耗时的代码,App本意是在执行耗时代码时将按钮暂时变为一个活动指示器,等到代码运行完毕再恢复原来的按钮.但是App运行时活动指示器从未显示过!这是一个典型的主线程阻塞的情况,因为添加活动指示器是一个UI操作,所以它会被耗时操作阻塞,它会被执行,但没有效果(或者说结果未定义,在这里就是没有效果):func handle(){ navig
2017-01-06 08:23:52 974
原创 CoreData数据验证失败仍然插入context的解决(一)
CoreData对于data manager对象提供了数据验证的机制,只有验证成功才可以插入底层的持久存储,参考如下代码:if let ks = NSManagedObject(entity: entity, insertInto: containerVC.managedObjectContext) as? KsMain{ //fill data to ks object //插入数
2017-01-01 16:17:39 964
SwiftUI 超酷炫动画示例大合集
2024-01-08
MacOS 和 iOS 内核 xnu 可编译源代码
2024-01-08
SwiftUI 示例 iFonts 应用完整项目源代码
2024-01-08
SwiftUI 各种界面、自定义视图、动画以及设计哲学示例合集
2024-01-08
SwiftUI 英雄动画(HeroAnimations)演示代码
2024-01-08
iOS 15.4 真机调试支持包(可支持最新的iOS 15.4.1系统)
2022-04-03
SwiftUI编程实现不同TabView标签页中任意导航层级视图之间相互跳转的演示代码
2022-04-03
unlocker_new
2008-11-10
UnlockerEx
2008-04-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人