小编Mar*_*ing的帖子

Ruby on Rails:删除多个哈希键

我经常发现自己在写这个:

params.delete(:controller)  
params.delete(:action)  
params.delete(:other_key)  
redirect_to my_path(params)  
Run Code Online (Sandbox Code Playgroud)

删除的痕迹感觉不对,也没有:

[:controller, :action, :other_key].each do |k|
  params.delete(k)
end
Run Code Online (Sandbox Code Playgroud)

有什么更简单,更清洁的吗?

ruby ruby-on-rails

146
推荐指数
6
解决办法
6万
查看次数

jQuery提交事件处理程序只能工作一次

我正在使用.submit()事件处理程序使用jQuery 1.6验证一个简单的表单,当表单无效时返回false:

$(function() {
  $('#my-form').submit(function(event) {
    if (true) {  // for testing, always go through the failure path
      alert("Invalid entry");
      return false;
    } else {
      return true;
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

如果用户进行了选择,则表单已正确提交.如果用户未进行选择,则会显示警报并且未提交表单(再次,正确).问题是在这种情况下,提交按钮不再有效.换句话说,一旦发生故障情况,用户就会停留在表单中,但单击提交按钮不会执行任何操作.

我已经验证了HTML(没有重复的ID,没有"提交","长度"等的名称/ ID).表单是动态加载的,因此使用Firebug进行测试是一个问题.表单上的其他事件处理程序工作正常(例如,我在字段值更改时看到警报).另一个奇怪之处:我将"return false"替换为"event.preventDefault();返回true",但表单仍然提交.(我以为.preventDefault()会阻止它.)

有任何想法吗?

编辑:这种方法有效:

$(function() {
  $('#my-form :submit').click(function(event) {
    if (...validation stuff goes here...) {
      alert("Invalid entry");
      return false;
    } else {
      $('#my-form').submit();
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

我仍然想知道我的original.submit()事件处理程序方法有什么问题.

jquery

15
推荐指数
2
解决办法
6221
查看次数

在Rails应用程序中记录线程内部

我有一个Rails应用程序,其中少量操作需要大量的计算时间.我没有考虑将这些操作作为后台任务进行管理的复杂性,而是发现我可以将处理拆分为多个线程,并且通过将JRuby与多核服务器一起使用,我可以确保所有线程在合理的时间内完成.(客户已表示非常有兴趣在后台保持此方法与运行任务.)

问题是写入Rails记录器在这些线程中不起作用.日志文件中没有显示任何内容.我找到了一些对这个问题的引用但没有解决方案.我不介意在我的代码中插入puts以帮助调试,但是stdout似乎被glassfish gem app服务器吃掉了.

有没有人成功完成Rails ruby​​线程内的日志记录,而不是每次都创建一个新日志?

multithreading ipc ruby-on-rails jruby jrubyonrails

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

Javascript语言的状态是什么?

在Javascript之上构建了许多有用的库,但我从未听说过Javascript语言本身的任何变化.

Javascript正在发展还是基本上被冻结了?

javascript

8
推荐指数
4
解决办法
386
查看次数

修改has_many的行为还是使用scope?

我有一个看起来像这样的类:

class User < ActiveRecord:Base
  has_many :users_companies
  has_many :companies, :through => :users_companies
end
Run Code Online (Sandbox Code Playgroud)

对于普通用户,我想user.companies参考标准关联方法,但是当用户是管理员时,我想要User.all(即管理员可以访问所有公司).我能想到的最简单的方法是实现这个(以及我过去一直做的)是在Company类上使用一个范围,例如:

scope :accessible_by, lambda { |user| ... }
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,这感觉不对.而不是编写包含以下内容的控制器操作:

  @companies = Company.accessible_by(current_user)
Run Code Online (Sandbox Code Playgroud)

我觉得写作更舒服

  @companies = current_user.companies
Run Code Online (Sandbox Code Playgroud)

有没有一种好方法可以覆盖User#companies方法来适应这种行为?或者,我是否应该对在公司使用范围感到满意?

ruby-on-rails

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

从更新操作重定向到编辑的引用者

我的Rails 2.3应用程序具有用户模型和通常的控制器操作.编辑表单可以通过两种方式实现:当用户从主页编辑自己的个人资料时,或者管理员用户从用户集合编辑其他人的个人资料时.

我想要做的是让更新操作重定向回引用的编辑操作,而不是更新操作.如果我在更新中做一个简单的redirect_to(:back),它会回到编辑表单 - 不好.

一种解决方案是完全忘记引用和基于current_user和更新用户的重定向:如果它们相同,则返回主页,否则转到用户集合页面.如果我向编辑表单添加第三个路径,这将会中断.令人怀疑的是我会做到这一点,但我更喜欢一种不那么脆弱的解决方案.

另一种解决方案是将编辑表单的引用者存储在隐藏字段中,然后从更新操作内部重定向到该值.这感觉不太对劲,但我无法解释原因.

还有更好的方法吗?或者,我是否应该停止担心并选择我提到的两个中的一个?

ruby-on-rails

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