小编Jer*_*iko的帖子

在jQuery中检测输入[type = text]的值变化

我想在每次特定输入框的值更改时执行函数.它几乎可以使用$('input').keyup(function),但是在将文本粘贴到框中时没有任何反应.$input.change(function)只有当输入模糊时触发,那么只要文本框的值发生变化,我怎么能立即知道?

jquery

145
推荐指数
5
解决办法
34万
查看次数

Rails/Arel:选择所有记录作为ActiveRecord :: Relation

在Rails中使用Arel - 我正在寻找一种创建ActiveRecord::Relation有效结果的方法SELECT * FROM table,我仍然可以进一步操作.

例如,我有一个分为多个类别的模型,我按以下方式返回这些类型的计数:

relation = Model.where(:archived => false) # all non-archived records
record_counts = {
  :total => relation.count,
  :for_sale => relation.where(:for_sale => true).count
  :on_auction => relation.where(:on_auction => true).count
}
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,并且具有COUNT向MySQL发送查询的优势,而不是实际选择记录本身.

但是,我现在需要在计数中包含存档记录,但relation = Model.all结果是Array,我正在寻找ActiveRecord::Relation.

我能想到这样做的唯一方法是model.where(model.arel_table[:id].not_eq(nil)),这有效,但似乎有些荒谬.

任何人都可以对此有所了解吗?

activerecord ruby-on-rails arel active-relation

31
推荐指数
2
解决办法
6431
查看次数

Rails Arel选择不同的列

我用新scope方法(Arel 0.4.0,Rails 3.0.0.rc)轻微阻止了

基本上我有:

一个topics模型,它has_many :comments和一个comments模型(带有一topic_id列)belongs_to :topics.

我正在尝试获取"热门话题"的集合,即最近评论过的主题.目前的代码如下:

# models/comment.rb
scope :recent, order("comments.created_at DESC")

# models/topic.rb
scope :hot, joins(:comments) & Comment.recent & limit(5)
Run Code Online (Sandbox Code Playgroud)

如果我执行Topic.hot.to_sql,则触发以下查询:

SELECT "topics".* FROM "topics" INNER JOIN "comments"
ON "comments"."topic_id" = "topics"."id"
ORDER BY comments.created_at DESC LIMIT 5
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但它可能会返回重复的主题 - 如果主题#3最近被多次评论过,则会多次返回.

我的问题

我将如何回归一组独特的主题,记住我仍然需要访问该comments.created_at领域,以显示最后一篇文章的持续时间?我会想象一下distinct或者是什么group_by,但我不太清楚如何最好地去做.

非常感谢任何建议/建议 - 我已经添加了100个代表奖金,希望很快能找到一个优雅的解决方案.

activerecord ruby-on-rails arel

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

在RoR重新开课的地方

我正在尝试重新打开Stringrails中的类,并为我的应用程序添加更多方法.编写代码不是问题 - 我的问题是关于代码应该去哪里.

我在一个不同的模型文件中重新打开一个类是没有意义的,因为它实际上与任何模型没有任何关系.我想也许在某个地方config或者lib有意义,但我还不是特别熟悉RoR.

总而言之,定义类修改代码的最合理的位置在哪里,是否有任何影响,具体取决于代码加载的位置/时间?

ruby ruby-on-rails

9
推荐指数
2
解决办法
1346
查看次数

Rails 3 has_many:通过+连接表条件/范围

我的工作是有模型的应用程序UserProject,并User可以被分配到多个ProjectS,通过ProjectUser与一个角色(如开发人员,设计师).

Project
  has_many :project_users
  has_many :users, :through => :project_users

User
  has_many :project_users
  has_many :projects, :through => :project_users

ProjectUser (user_id, project_id, role)
  belongs_to :user
  belongs_to :project
Run Code Online (Sandbox Code Playgroud)

我可以打电话@project.users@user.projects,但由于存在着不同的角色,我想成为一个更具体一点与关系.理想情况下,我希望能够执行以下操作:

@project.developers
  # returns @project.users, but only where ProjectUser.role = 'Developer'

@project.designers << @user
  # creates a ProjectUser for @project, @user with role 'Designer'

@user.development_projects
  # returns projects where @user is assigned as a 'Developer'

@user.design_projects << @project
  # creates a …
Run Code Online (Sandbox Code Playgroud)

activerecord arel ruby-on-rails-3

9
推荐指数
2
解决办法
6708
查看次数

使用ember.js进行A/B测试

关于使用客户端框架(如ember.js)进行A/B测试,我在Google上发现了一切.

目标是提供调整后的内容(不同的导航项,标题短语等),以便A/B测试我们的UI/UX.我应该注意到,没有什么重要的(即站点地图)正在改变,只是一些小的表现方面.

有几种可能的方法,即使用不同的视图模板/帮助器片段,或提供不同的样式表.两者都有优势和挑战,理想情况下,相同的访问者将始终提供相同的版本.结果将通过Mixpanel等服务提供.

我担心我可能不得不在这里推出自己的解决方案,但我很乐意听到任何建议/指示.

ab-testing ember.js

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

客户端网站上的恶意软件 - 想法?

我们最近接到了一位客户的电话,抱怨他们的网站在页面底部有一些"奇怪的代码".我们查看了源代码,发现templates/master</html>标记之后,大约有800字节的恶意javascript代码被附加到文件中.我不会发布所说的代码,因为它看起来特别讨厌.

据我所知,除非有人直接访问服务器和/或FTP登录详细信息,否则无法以任何方式编辑此文件.实际文件本身已被修改,因此排除了任何类型的SQL攻击.除了身体获得凭据并手动修改此文件的人之外,还会对发生的事情进行任何其他逻辑解释吗?有没有其他人有过这种事情的经历?

javascript security virus malware

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

如果w3.org HTML5表单规范在父<label>中嵌入<input>,为什么大多数页面都将它们作为兄弟姐妹实现?

我一直在阅读w3.org HTML5表单规范,并惊讶地看到以下HTML:

<p><label>Customer name: <input name="custname"></label></p>
<p><label>Telephone: <input type=tel name="custtel"></label></p>
<p><label>E-mail address: <input type=email name="custemail"></label></p>
Run Code Online (Sandbox Code Playgroud)

从语义上讲,这让我很困惑.<label>作为一个兄弟姐妹<input>而不是作为其父母,不会更有意义吗?

在野外,我更习惯于看到以下配置:

<p>
  <label for="customer_name">Customer name:</label>
  <input id="customer_name" name="customer[name]">
</p>
Run Code Online (Sandbox Code Playgroud)

我知道那里的大部分标记都是格式错误的,但我很想听听别人对正确惯例的看法.

我的立场得到了纠正,但似乎我使用过的每个标记生成器和表单助手都违反了W3的建议 - 即使是那些声称支持HTML5,使用客户端验证等的建议.

思考?

html5 w3c

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

设计模式建议,用于实时同步在线游戏中的多用户数据

我正在研究一个学习node.js的项目,并正在寻找一些关于如何实时同步用户数据的建议.

假设您有一个2D矩形地图(大约600x400),其中有许多玩家占据该地图上的x,y位置.每个用户都可以使用箭头键导航,并以某种基本方式与其他用户进行交互.鉴于这将通过HTTP播放,在处理和同步用户数据方面最好的设计模式是什么,以提供最流畅,最快捷的体验?

我可以想到几个选项,但会更多的想法/澄清:

  1. 客户端将位置数据发送到服务器,服务器将所有位置分配给所有客户端,屏幕显示结果.重复.缺点是客户端滞后于数据往返所需的时间,但好处是它们与所有用户同步.

  2. 客户端呈现它认为不断的位置,将位置数据发送到服务器,服务器将所有位置分配给所有客户端,然后使用服务器数据更正客户端数据的屏幕呈现.上行是一个更快的反应,下行是轻微的同步损失.

  3. 两者的混合,但不是使用(x,y)坐标,而是使用[先前x/y和时间,当前x/y和时间的矢量,在时间间隔建议x/y],然后可以用于绘制不断移位的抛射路径.这似乎很难实现.

有什么指针吗?

javascript design-patterns online-game node.js

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

通过命令行连接导轨/回形针

我的服务器上的文件夹中有一堆 jpeg 文件,我试图Property通过 rake 任务将它们附加到相应的实例。

property.rb有以下代码:

  has_attached_file :temp_photo,
    :styles => PropertyImage::STYLES,
    :url => "/assets/:class/:attachment/:id_partition/:style_:basename.:extension",
    :path => "#{Rails.root}/public/assets/:class/:attachment/:id_partition/:style_:basename.:extension"
Run Code Online (Sandbox Code Playgroud)

我在其他型号上使用回形针,没有任何问题,但当我尝试以下操作时遇到问题:

p = Property.find(id)
file = File.open(temp_file_path)
p.temp_photo = file
p.save

# => false

file.close
p.errors

# => "/tmp/stream20110524-1126-1cunv0y-0.jpg is not recognized by the 'identify' command."
Run Code Online (Sandbox Code Playgroud)

该文件肯定存在,并且我已尝试更改权限。重新启动服务器没有帮助。问题似乎在于使用命令行,因为正常形式/HTTP 方法工作正常。这只是一个临时设置,因此我正在寻找一种将一批文件导入我的 Rails 应用程序回形针模型的工作方法。

有什么建议么?

ruby-on-rails paperclip

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

MySQL在选择时连接到列

我在这里处理一些遗留数据库,我在编写搜索查询时遇到了一些麻烦.

有关的两个表是productstours(每个产品多个).

我的一般查询如下所示:

SELECT products.*, tours.* FROM products INNER JOIN tours 
ON products.id=tours.product_id
GROUP BY products.id
Run Code Online (Sandbox Code Playgroud)

现在这是我遇到麻烦的部分.该products表包含一个列,countries它是国家ID的管道分隔列表,如下所示:13|45|33|29|133|337.我需要返回一个列表products,例如国家/地区33.

为简单起见,我能做到where products.countries LIKE '%33%',但是这将返回133337为好.我需要使用where products.countries LIKE '%|33|%',但如果它们是第一个或最后一个,它将无法匹配.因此,我需要在选择时将管道附加到列值的任意一端,这样就会产生类似于:

SELECT products.*, tours.*, CONCAT("|",products.countries,"|") AS country_list
FROM products INNER JOIN tours ON products.id=tours.product_id
GROUP BY products.id
Run Code Online (Sandbox Code Playgroud)

但如果我尝试添加WHERE country_list LIKE '|%33%|',我会收到"undefined index: country_list"错误..

我在这做错了什么?

mysql

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