小编Don*_*n P的帖子

从一系列ID中获取所有Rails记录

我有一系列记录ID ["303", "430", "4321", "5102"].我想使用SQL获取与这些ID匹配的所有记录:

acceptable_ids = ["303", "430", "4321", "5102"]
@users = User.where("is_awesome = true AND id IN acceptable_ids)
Run Code Online (Sandbox Code Playgroud)

给出了这个错误:

ActiveRecord::StatementInvalid (PG::SyntaxError: ERROR:  syntax error at or near "["
Run Code Online (Sandbox Code Playgroud)

编写查询以获取所有匹配ID的用户的正确方法是什么acceptable_ids

注意:

我知道User.find(acceptable_ids),但不能使用它,因为我正在使用select,where和join子句构建SQL查询.

postgresql ruby-on-rails rails-activerecord

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

将函数传递给另一个函数并调用它

Ruby中的函数不是第一类对象,但我希望能够将对函数的引用传递给另一个函数并让它被执行.如何才能做到这一点?

例:

def run_a_function_twice(my_function)
  # Call the function once.
  # Call the function again.
end

def say_hello
  puts "HI!"
end

run_a_function_twice(say_hello)
Run Code Online (Sandbox Code Playgroud)

我正在阅读文档,但不确定我是否应该尝试lambdas,procs或call(我只熟悉其他语言的调用概念)

ruby

1
推荐指数
3
解决办法
2408
查看次数

在 Swift 中为现有的 SKSpriteNode 添加纹理

如何向现有的 SKSpriteNode 添加纹理?

在文档中,我看到的是一种用纹理初始化 SKNode 的方法,而不是向其添加纹理的方法。

// Creating with a texture is easy.
var mySprite = SKSpriteNode(texture: myTexture)

// But no method for adding a texture.
var anotherSprite = SKSpriteNode()
anotherSprite.texture = myTexture // This is not valid.
Run Code Online (Sandbox Code Playgroud)

sprite-kit swift

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

在Rails视图中映射并加入数组

我在Ruby中有一个数组:

arr = ["aba", "bab", "abb"]

我想用“ c”替换所有“ a”,然后用分号将元素连接在一起。

# Replace "a" with "c"
replaced_arr = arr.map {|element| element.sub("a", "c") }

# Join with a ";"
joined_string = replaced_arr.join(";")

# "cbc; bcb; cbb"
Run Code Online (Sandbox Code Playgroud)

如何在Rails视图中执行此操作

<%= arr.map(|element| element.sub("a", "c")).join(";") %>给我错误syntax error, unexpected keyword_end, expecting ')'

ruby ruby-on-rails ruby-on-rails-4

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

当我渲染json时,attr_accessor的属性不显示

在Rails中,我有一个User模型。我添加attr_accessor :score了模型。

如果为一个用户呈现JSON,则看不到“得分”属性。为什么是这样?

user = User.find(3)
user.score = 55
render json: user
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails attr-accessor ruby-on-rails-4 rails-activerecord

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

使用"排序"对ruby中的对象数组进行排序

我怎样才能对这个数组进行排序,以便所有哈希optional = true都是最后一个?

my_array = [
  { name: "foo", optional: true }, 
  { name: "pop" }, 
  { name: "boop", optional: true },
  { name: "pop", optional: false }
]
Run Code Online (Sandbox Code Playgroud)

我试过这个:

my_array.sort { |a,b| a['optional'] <=> b['optional'] }
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

comparison of Hash with Hash failed
Run Code Online (Sandbox Code Playgroud)

错误是令人惊讶,因为做一个["可选"]会返回的值true,falsenil.

注意:
我知道这个解决方案.sort_by { |a| (a['optional'] ? 1 : 0) }.我想sort特别了解这个方法.

ruby arrays sorting

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

删除React组件卸载时的事件侦听器

我在我的一个组件中监听窗口"滚动"事件.但是,卸载组件时,不会删除滚动事件侦听器.

在卸载组件后发生滚动事件时会产生以下错误:

warning.js:36警告:setState(...):只能更新已安装或安装的组件.这通常意味着您在已卸载的组件上调用了setState().这是一个无操作.请检查TopNavDesktop组件的代码.

如何正确删除此事件侦听器?

示例代码:

class NavBar extends Component {
  constructor() {
    super();

    this.state = {
      distanceScrolled: null
    }
  }

  componentDidMount() {
    window.addEventListener('scroll', this.handleScroll.bind(this));
  }

  componentWillUnmount() {
    window.removeEventListener('scroll', this.handleScroll.bind(this));
  }

  handleScroll(e){
    const distanceScrolled = e.srcElement.body.scrollTop;

    this.setState({ distanceScrolled: distanceScrolled });
  }

  render { ... } 
}
Run Code Online (Sandbox Code Playgroud)

javascript addeventlistener reactjs

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

使用 Lodash 的 reduce 对集合求和

我有一个简单的集合:

[{a: 1}, {a: 2}, {a: 3}]

如何使用 Lodash 的 reduce 来获取所有“a”属性的总和?

这似乎是一个微不足道的/规范的用法,但我无法正确使用语法,而且令人惊讶的是,除了Lodash 的示例之外,找不到任何文档。

使用 Lodash 的文档示例,它应该是:

const total = _.reduce([{ a: 1}, {a: 2}, {a: 3}], (sum, elem) => elem.a);

然而,这将返回值“3”而不是“6”。

注意:我特别询问reduce. 我知道其他方法,比如这个问题中的方法

lodash

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

确定当前时间是否在当天下午5点之前

我希望在一个循环中有代码,只有在任何一天的下午5点之前运行.

什么代码会这样做?

IF (current_time < 5:00pm) {
   // Do stuff
}
Run Code Online (Sandbox Code Playgroud)

php time date

0
推荐指数
1
解决办法
2040
查看次数

在`<div>`中居一个`<img>`

如何将中心<img>放入容纳中<div>

通常margin-left: auto; margin-right: auto;是行不通的.

图像可以比容器大,并通过max-width和水平或垂直缩放max-height.

以下代码的jsfiddle:http://jsfiddle.net/9ShGj/1/

HTML:

<div class="container">
   <img src="http://www.yensa.com/fat/fat-dude10.jpg" />
</div>
<div class="container">
   <img src="http://oi43.tinypic.com/bje2wn.jpg" />
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.container {
 width: 200px;
 height: 200px;
 background: rgb(120, 120, 120);
 border: 1px solid red;
 margin: 5px;
}

.container img {
 max-width: 200px;
 max-height: 200px;
 margin-left: auto;
 margin-right: auto;
 vertical-align: middle;
}
Run Code Online (Sandbox Code Playgroud)

html css margin vertical-alignment css3

0
推荐指数
1
解决办法
199
查看次数