小编Nob*_*ita的帖子

Ruby - 访问多维哈希并避免访问nil对象

可能重复:
Ruby:IF语句中的Nils
是否有一种干净的方法可以避免在嵌套的params哈希中调用nil上的方法?

假设我尝试访问这样的哈希:

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方式吗?

ruby hash conditional

87
推荐指数
3
解决办法
3万
查看次数

Flot中的轴标签

有谁知道如何在Flot中设置轴的标签或标题?

我已经阅读了API,但它似乎没有这个功能......

谢谢 :)

javascript flot

48
推荐指数
4
解决办法
5万
查看次数

Integer(value)和value.to_i之间的差异

给定一个像这样的字符串对象:

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)

有什么区别吗?是否建议在另一个中使用其中一个?

ruby

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

CodeIgniter身份验证+用户权限

我正在尝试在我的应用程序中构建一个身份验证系统,但我在决定哪些是我能在CodeIgniter中实现我想要的最佳方式时遇到了一些问题.

该网站允许公司管理他们的建筑物.公司可以拥有许多建筑物和许多用户(当我说用户时我指的是该公司的员工).

在这个网站上我想要两个(基本上)四种普通用户.

  • 超级管理员:这将能够将新的管理员和新公司添加到数据库,并为其他管理员授予权限.
  • 管理员:根据分配的权限,这将能够执行不同的操作.
  • 公司超级用户:当管理员创建新公司时,将直接创建此用户.该用户可以为该公司创建新用户,并且由于他/她将具有完全权限,因此他将能够执行其他用户可以执行的所有操作.
  • 公司用户:根据超级用户分配的权限,该用户可以查看和查看不同的数据(例如,简单的用户只能查看来自众多公司大楼之一的信息).

所以,尽管我已经在CodeIgniter上看到了很多认证库,但是听到有关如何设计这个"基于身份验证角色"系统的任何建议会很高兴,如果你特别推荐一个可以帮助实现这个目标的库.

欣赏!

php authentication codeigniter

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

Rails - 通过Active Resource使用API​​时URL中包含多个值的参数

我正在使用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不接受它.所以我的问题是:

传递具有多个值的参数的正确方法是什么?它是语言特定的吗?谁决定这个?

api url w3c ruby-on-rails

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

从Rails中的子对象访问父对象属性

我有一个名为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)

model ruby-on-rails foreign-keys

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

这个JavaScript闭包函数如何在没有全局变量的情况下重用一个对象?

我决定向前迈出一步,试图理解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分钟)

(如果有人想到更好的头衔,请酌情建议......)

javascript closures

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

Ruby one liner将数组元素传递给带分隔符的字符串

我有这样一个数组:

myarray = ['value1','value2','value3']
Run Code Online (Sandbox Code Playgroud)

我正在寻找像这样的单元素数组:

mynewarray = ['value1|value2|value3']
Run Code Online (Sandbox Code Playgroud)

我知道如何使用每个并在字符串中连接,但我想知道是否有一个oneliner和美丽的Ruby方式这样做...

ruby arrays

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

确定使用CSS移位的背景图像的左上角坐标

我试图通过应用一些CSS规则找到背景图像顶部和左侧坐标已从视口移开.很难用文字解释,这是一个视觉例子:

背景图像向左移动

黑匣子:视口红
:<div>background-image
蓝框:<div>包含一个<a>

当我做getBoundingClientRect<div>background-image,我得到0px 0px.这是有道理的,因为容器在视口内,并且从最顶部和左侧开始.

然而,它的背景图像<div>已经向左移动了(它也可能已经移到了顶部),因此坐标应该与坐标不同<div>.所以我的问题是:

我将如何阅读(我不想更改)如何在任何面临这种情况的页面中找到绿点的坐标?我的意思是,浏览器必须知道需要切割多少像素background-image,对吧?

我目前正在使用Javascript访问Web/Dom API.我愿意使用任何东西(没有文件记载?)来实现这一目标.

html javascript css dom

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

为什么使用实例变量将控制器与视图"连接"?

这是一个概念性问题,我无法在SO中找到答案,所以我在这里:

为什么实例变量用于连接控制器和视图?我们不是有两个不同类的两个不同的对象(Controller vs Views).因此,当渲染视图时,我们处于不同的上下文中,但我们正在使用另一个对象的实例变量?这不是以某种方式破坏封装吗?

Rails如何设法从一个对象到另一个对象进行匹配?它是否将控制器的所有实例变量克隆到视图中?

ruby-on-rails instance-variables conceptual

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