#3 楼 @yakczh 我在项目中用这个 Gem,https://github.com/janko-m/sinatra-activerecord
听在里面任职的朋友说公司本身业务盈利不错,福利待遇也很好。去过一次,在三里屯 SOHO
不过 RVM 上好像还没有更新
require 'nokogiri'
Nokogiri::XML(xml_str).css('item').each do |item|
title = item.at_css('title').content
photo_name = item.at_css('photo_name').content
end
详细内容参考官方文档 http://nokogiri.org/tutorials
你应该是想要 Post
吧
#2 楼 @u1378130755 会不会是那个对象是你手动创建在 development 环境下的数据库中,而不是在 test 环境下的数据库中
我觉得最大的好处就是第一种的参数对调用方而言,构造起来更简单。
第一种是 ruby1.9 加入的新的 Hash 写法,当 key 为 symbol 类型时,:key => 'value'
可以写成 key: 'value'
,所以二者是等价的。
perform_async 是类方法,来自于 include Sidekiq::Worker
,可参考 https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/worker.rb#L39
我们定义的 perform 方法是实例方法,是 Sidekiq 将队列中的 job 分配给 Processor 后,在 Processor 中调用的 https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/processor.rb#L49
http://api.jquery.com/keypress/
The keypress event is sent to an element when the browser registers keyboard input. This is similar to the keydown event, except that modifier and non-printing keys such as Shift, Esc, and delete trigger keydown events but not keypress events. Other differences between the two events may arise depending on platform and browser.
我的 which rvm
返回的是 /home/reyesyang/.rvm/bin/rvm
,所以这个应该是没有问题的。现在使用上有什么问题吗?
Windows 默认使用的 GBK 编码。可以判断 UA,如果是 window 用户,导出时使用 iconv 转成 GBK 编码
def conv2gbk_if_win(str)
if request.headers["HTTP_USER_AGENT"] =~ /Windows/
require 'iconv'
Iconv.new("GBK", "UTF-8").iconv(str)
else
str
end
end
你确定“本地开发环境表面上看起来正常”吗?
An object's instance variables are its attributes, the things that distinguish it from other objects of the same class. It is important to be able to write and read these attributes; doing so requires methods called attribute accessors.
Attributes 是指对象的实例变量。但是我们日常使用中,习惯用 attributes 指代 attributes accessor,也就是实例变量对应的同名 setter/getter 方法,所以也才会有“Ruby 的属性其实是方法”的说法。
Virtual attribute 不存在相对应的同名实例变量,是对其他 attribute 操作而进行封装的实例方法。
示例,firstname,lastname 为属性,fullname 为虚拟属性:
class Person
attr_accessor :firstname, :lastname
def fullname
"#{firstname} #{lastname}"
end
def fullname=(fullname)
names = fullname.split
self.firstname = naems[0]
self.lastname = names[1]
end
end
上面的代码其实等价于:
class Person
def firstname
@firstname
end
def firstname=(firstname)
@firstname = firstname
end
def lastname
@lastname
end
def lastname=(lastname)
@lastname = lastname
end
def fullname
"#{firstname} #{lastname}"
end
def fullname=(fullname)
names = fullname.split
self.firstname = naems[0]
self.lastname = names[1]
end
end
sign_out 之前调用过 sign_in 方法,你意思应该是在登出前先登录了一次吧?如果是这样的话,因为两次调用不是在一次请求中,登录是登录的请求,登录请求中是给 @current_user
赋了值,但该请求完毕后,所有实例变量和请求一并就销毁了。和登出请求是无关的。
#4 楼 @cloude9101 这个就取决于你在调用 sign_out 方法之前有没有调用过 current_user 方法了
从 current_user 方法可以看出,是通过 remember_token 来查找用户的,所以在 sign_out 中,先删除 remember_token 的话,current_user 当然找不到了,所以为 nil。
self 只有在进行复制操作的时候,也就是 method_name =
时,为了防止其变成一个局部变量复制操作才需要加上 self,变为 self.method_name =
,其他情况下是不需要加的
互动百科上对“除非”的中文解释,有些意思。http://www.baike.com/wiki/%E9%99%A4%E9%9D%9E
建议使用 partial view,可参考 http://guides.rubyonrails.org/layouts_and_rendering.html#rendering-collections
推荐楼主阅读 Ruby self 在不同环境的含义
涨姿势了