小编Sai*_*Sai的帖子

Rails - 简洁地找到多态嵌套资源的父资源

假设我有这样的多态结构.

map.resources :bar, :has_many => :foo
map.resources :baz, :has_many => :foo
map.resources :qux, :has_many => :foo

class Foo
  belongs_to :parent, :polymorphic => true
end

class FooController < AC
 before_filter :find_parent

 ...

 private
 def find_parent
  # ugly way:
  @parent = if params[:bar_id]
   Bar.find(params[:bar_id])
  elsif params[:baz_id]
   Baz.find(params[:baz_id])
  elsif params[:qux_id]
   Qux.find(params[:qux_id])
  end 
 end
end
Run Code Online (Sandbox Code Playgroud)

那太难看了.每当我们添加一个它可能属于的新东西时,我们需要将它非干扰地添加到before_filter.

它也变得更糟.假设Foos 真的是可以在任何地方出现的多态事物,比如评论或标签.并假设您有以下路线:

map.resources :bar, :has_many => :foo do |bar|
 bar.resources :baz, :has_many => :foo
end
map.resources :qux, :has_many => :foo do |qux|
 qux.resources :baz, :has_many => :foo …
Run Code Online (Sandbox Code Playgroud)

routing routes ruby-on-rails polymorphic-associations

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

CSS / JavaScript:获取元素的用户可见文本

假设我有以下HTML:

<div id="test">
  <span style="display:inline;">foo</span>
  <span style="display:none;">bar</span>
  <span style="display:inline;">baz</span>
</div>
Run Code Online (Sandbox Code Playgroud)

.. JavaScript中有什么办法让我获取输出“ foo baz”(不是“ foo bar baz”)吗?

$('test').textContent返回后者,并innerHTML执行等效操作。

我根本不在乎所使用的方法是hackhack还是环形交叉路口,如果它是特定于浏览器的或需要Flash,则可以对其进行处理。

但是,除了JS或Flash之外,它不需要其他任何内容,不需要任何用户交互,并且它不得返回“ bar”。

有想法吗?

javascript css jquery innerhtml

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

mysql:在一行中多个列的平均值,忽略空值

我有一个大表(站点)有几个数字列 - 比如说a到f.(这些是来自不同组织的网站排名,例如alexa,google,quantcast等.每个都有不同的范围和格式;它们是来自外部数据库的直接转储.)

对于许多记录,这些列中的一个或多个为空,因为外部DB没有数据.它们都涵盖了我的数据库的不同子集.

我希望列t是它们的加权平均值(每个a..f都有我赋予的静态权重),忽略空值(可以出现在任何一个中),除非它们全部为空,否则为null.

我更喜欢用简单的SQL计算来做这件事,而不是在应用程序代码中使用它,或者使用一些巨大的丑陋嵌套if块来处理每个空值的排列.(鉴于我添加了更多的外部数据库源,我的平均列数越来越多,这将是指数级更难看和容易出错的.)

我会使用AVG,但这仅适用于分组,而且这是一个记录中的w /.数据在语义上可以为空,我不想平均一些"平均"值代替空值; 我想只计算数据所在的列.

有没有办法做到这一点?

理想情况下,我想要的是像UPDATE sites SET t = AVG(a*@a_weight,b*@b_weight,...)任何空值被忽略并且没有发生分组的情况.

编辑:我最终使用的,基于van's并添加正确的加权平均值(假设a已根据需要进行了规范化,在本例中为浮点数0-1(1 =更好):

 UPDATE sites 
 SET t = (@a_weight * IFNULL(a, 0) + ...) / (IF(a IS NULL, 0, @a_weight) + ...) 
 WHERE (IF(a IS NULL, 0, 1) + ...) > 0
Run Code Online (Sandbox Code Playgroud)

mysql sql

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

在公共模式下访问Google+(Ruby)API

我想使用google ruby​​ API客户端进行相当于例如此API资源管理器调用.

这应该是简单的:

require 'rubygems'
require 'google/api_client'
require 'httpadapter/adapters/net_http'

@client = Google::APIClient.new(
  :key => MY_SIMPLE_API_SERVER_KEY,
  :host => 'www.googleapis.com',
  :http_adapter => HTTPAdapter::NetHTTPAdapter.new, 
  :pretty_print => false
)
@plus = @client.discovered_api('plus', 'v1')

status, headers, body = @client.execute(
  @plus.people.list_by_activity,
  'activityId' => 'z12nspyxxufislit423eex442zqpdtqnk',
  'collection' => 'plusoners',
  'maxResults' => '100',
  'authenticated' => 'false'
)
public_activity = JSON.parse(body[0])
Run Code Online (Sandbox Code Playgroud)

但是,这个execute电话会导致ArgumentError: Missing access token.

我不希望登录用户; 我只想访问公共数据.我该怎么做呢?

google-api google-api-client google-plus

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

为什么未声明的Ruby本地,实例,类和全局变量具有不同的行为?

一些未声明的变量为零,有些则抛出错误.怎么会?

$ irb
1.9.3p0 :001 > asdf  # local
NameError: undefined local variable or method `asdf' for main:Object
from (irb):1
from /Users/saizai/.rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in `<main>'
1.9.3p0 :002 >@asdf # instance
=> nil 
1.9.3p0 :003 >@@asdf # class
NameError: uninitialized class variable @@asdf in Object
from (irb):3
from /Users/saizai/.rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in `<main>'
1.9.3p0 :004 > $asdf # global
=> nil
Run Code Online (Sandbox Code Playgroud)

ruby

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

Rails命名空间模型与非命名空间模型冲突

我在rails 3.2.6中有两个类:

  • models/foo.rb中的类Foo(默认情况下为表格foos)
  • class bar中的Bar :: Foo/bar/foo.rb(设置self.table_name为bar_foos)

当我进入控制台时,我得到:

> Bar::Foo
=> Bar::Foo(id: ...)
> Foo # or ::Foo
LoadError: expected models/bar/foo.rb to define Foo
Run Code Online (Sandbox Code Playgroud)

怎么了?

activerecord namespaces ruby-on-rails

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

什么字体支持大量的权重?/如何伪造字体重量?

眼镜:

  • JS需要amyway现场.但更喜欢纯CSS/HTML
  • IE7 +,支持iPhone
  • 不支持旧浏览器(例如IE6)
  • 标准HTML没有疯狂的kludges(例如cufon,images,cifr).

问题:

  1. 什么字体支持4个或更多权重?大多数人似乎只有一两个.答案到目前为止:
    • Myriad Pro(据说以下测试失败了)
  2. 如何优雅地降低模仿字体重量感知效果的其他样式?

相关链接:

css fonts

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

是否存在可证明的最佳种子(和单个文件)块(片)大小?

BitTorrent协议不指定块(块)大小。这是留给用户的。(我见过相同内容的不同 torrent 有 3 个或更多不同的选择。)

\n

我正在考虑提交BitTorrent 增强提案,该提案需要为整个 torrent 以及单个文件(其中BTv2 (BEP 52))强制指定特定的块大小 \xe2\x80\x94指定 bs=16KiB)强制指定特定的块大小 \xe2\x80\x94 。

\n

我发现唯一接近的是 rsync 块大小算法Tridgell & Mackerras 技术论文中的 rsync 块大小算法中的 rsync 块大小算法。它们的 bs=300-1100 B(# 字节不是 2 的幂)。

\n

然而,Torrent通常 使用bs=64kB\xe2\x80\x9316MB(# bytes 是 2 的幂,比 rsync 大得多)(对于 BTv2,文件使用 16KiB)。

\n

指定的块大小不需要是常量。当然,它可能是事物散列大小的函数(就像 rsync 中的那样)。它也可以是文件类型的函数;例如,可能有一些块大小更适合使部分视频/存档/等文件更可用。

\n

另请参阅BitTorrent 作为块对齐文件系统的分析。

\n

所以\xe2\x80\xa6

\n
    \n
  1. 种子文件、通用文件或特定文件类型的部分用途的最佳块大小是多少?
  2. \n
  3. BEP 52 中的 16KiB bs 从哪里来?
  4. \n
\n

rsync bittorrent file-transfer

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

Ruby:打印任意方法的代码(和上下文中的exec)

我想做类似以下的事情:

class String
  def fancy_thing appendix
   # Just a trivial example to ensure self and params work.
   # Pretend this is something complex.
   self.reverse + appendix
  end
end

# print_method on instance or class should spit out a string
#  containing the actual code for that method
ft_code = "cob".print_method :fancy_thing
ft_code = String.print_instance_method :fancy_thing
  # => "{|appendix| self.reverse + appendix }"  *

# ft_code gets passed around a bit...

# exec on an object should run code (w/ parameters) …
Run Code Online (Sandbox Code Playgroud)

ruby metaprogramming exec

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