假设我尝试访问这样的哈希:
my_hash['key1']['key2']['key3']
Run Code Online (Sandbox Code Playgroud)
如果key1中存在key1,key2和key3,这很好,但是如果,例如key1不存在呢?
然后我会得到NoMethodError: undefined method [] for nil:NilClass.没有人喜欢这样.
到目前为止,我处理这个有条件的事情:
if my_hash['key1'] && my_hash['key1']['key2'] ...
这是否合适,还有其他Rubiest方式吗?
有谁知道如何在Flot中设置轴的标签或标题?
我已经阅读了API,但它似乎没有这个功能......
谢谢 :)
给定一个像这样的字符串对象:
twohundred = "200"
Run Code Online (Sandbox Code Playgroud)
做的有什么区别:
Integer(twohundred) #=> 200
Run Code Online (Sandbox Code Playgroud)
和:
twohundred.to_i #=> 200
Run Code Online (Sandbox Code Playgroud)
有什么区别吗?是否建议在另一个中使用其中一个?
我正在尝试在我的应用程序中构建一个身份验证系统,但我在决定哪些是我能在CodeIgniter中实现我想要的最佳方式时遇到了一些问题.
该网站允许公司管理他们的建筑物.公司可以拥有许多建筑物和许多用户(当我说用户时我指的是该公司的员工).
在这个网站上我想要两个(基本上)四种普通用户.
所以,尽管我已经在CodeIgniter上看到了很多认证库,但是听到有关如何设计这个"基于身份验证角色"系统的任何建议会很高兴,如果你特别推荐一个可以帮助实现这个目标的库.
欣赏!
我正在使用API,希望我按以下格式执行请求:
?filter=value1&filter=value2
Run Code Online (Sandbox Code Playgroud)
但是,我正在使用Active Resource,当我指定:params hash时,我不能使相同的参数在URL中出现两次,我认为这是正确的.所以我不能这样做:
:params => {:consumer_id => self.id, :filter => "value1", :filter => "value2" },因为哈希的第二个过滤器索引将被忽略.
我知道我可以传递一个数组(我认为这是正确的方法),如下所示:
:params => {:consumer_id => self.id, :filter => ["value1","value2"] }
Run Code Online (Sandbox Code Playgroud)
这将生成如下URL:
?filter[]=value1&filter[]=value2
Run Code Online (Sandbox Code Playgroud)
对我来说似乎没问题,但API不接受它.所以我的问题是:
传递具有多个值的参数的正确方法是什么?它是语言特定的吗?谁决定这个?
我有一个名为Category的模型,如下所示:
class Category < ActiveRecord::Base
has_many :categories
belongs_to :category,:foreign_key => "parent_id"
end
Run Code Online (Sandbox Code Playgroud)
我有一个视图,显示具有一些属性的所有类别.我可以访问category.parent_id,但我希望能够做类似的事情category.parent_name.
我可以看到自己创建一个模型方法来获取所有类别并使用每个类别的对应父级名称填充集合,但我想知道是否有任何方式可以轻松地执行此操作.
编辑:我修改了模型,让它像这样:
class Category < ActiveRecord::Base
has_many :children, :class_name => 'Category', :foreign_key => 'parent_id'
belongs_to :parent, :class_name => 'Category', :foreign_key => 'parent_id'
end
Run Code Online (Sandbox Code Playgroud)
创建表类别的迁移如下所示:
class CreateCategories < ActiveRecord::Migration
def change
create_table :categories do |t|
t.string :name
t.text :description
t.integer :parent_id
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
但是,当我将类别对象传递给视图时,我无法通过执行来访问其父属性category.parent.name- 执行inspect该对象时,我会:
<Category id: 2, name: "Test 2", description: "Prova 2", parent_id: 1, created_at: …Run Code Online (Sandbox Code Playgroud) 我决定向前迈出一步,试图理解Javascript并再次阅读Javascript:The Good Parts.这是第一个疑问:
假设我想避免使用全局变量因为它们是邪恶的,所以我有以下内容:
var digit_name = function(n) {
var names = ['zero','one','two','three'];
return names[n];
}
Run Code Online (Sandbox Code Playgroud)
D.Crockford声称这很慢,因为每次调用函数时,names都会完成一个新的实例化.所以,他通过这样做转移到闭包解决方案:
var digit_name = function () {
var names = ['zero', 'one', 'two', 'three'];
return function (n) {
return names[n];
}
}();
Run Code Online (Sandbox Code Playgroud)
这使得names变量存储在内存中,因此每次调用时都不会实例化它digit_name.
我想知道为什么?当我们打电话时digit_name,为什么第一行被"忽略"?我错过了什么?这里到底发生了什么?
我的这个例子不仅仅出现在书中,而是出现在这个视频上(第26分钟)
(如果有人想到更好的头衔,请酌情建议......)
我有这样一个数组:
myarray = ['value1','value2','value3']
Run Code Online (Sandbox Code Playgroud)
我正在寻找像这样的单元素数组:
mynewarray = ['value1|value2|value3']
Run Code Online (Sandbox Code Playgroud)
我知道如何使用每个并在字符串中连接,但我想知道是否有一个oneliner和美丽的Ruby方式这样做...
我试图通过应用一些CSS规则找到背景图像的顶部和左侧坐标已从视口移开.很难用文字解释,这是一个视觉例子:

黑匣子:视口红
框:<div>带background-image
蓝框:<div>包含一个<a>
当我做getBoundingClientRect的<div>用background-image,我得到0px 0px.这是有道理的,因为容器在视口内,并且从最顶部和左侧开始.
然而,它的背景图像<div>已经向左移动了(它也可能已经移到了顶部),因此坐标应该与坐标不同<div>.所以我的问题是:
我将如何阅读(我不想更改)如何在任何面临这种情况的页面中找到绿点的坐标?我的意思是,浏览器必须知道需要切割多少像素background-image,对吧?
我目前正在使用Javascript访问Web/Dom API.我愿意使用任何东西(没有文件记载?)来实现这一目标.
这是一个概念性问题,我无法在SO中找到答案,所以我在这里:
为什么实例变量用于连接控制器和视图?我们不是有两个不同类的两个不同的对象(Controller vs Views).因此,当渲染视图时,我们处于不同的上下文中,但我们正在使用另一个对象的实例变量?这不是以某种方式破坏封装吗?
Rails如何设法从一个对象到另一个对象进行匹配?它是否将控制器的所有实例变量克隆到视图中?
javascript ×3
ruby ×3
api ×1
arrays ×1
closures ×1
codeigniter ×1
conceptual ×1
conditional ×1
css ×1
dom ×1
flot ×1
foreign-keys ×1
hash ×1
html ×1
model ×1
php ×1
url ×1
w3c ×1