小编Max*_*ams的帖子

如何在JavaScript中从字符串中提取数字?

我想在JavaScript中拉出一个字符串中间的数字.在Ruby(我的主要语言)中我会这样做:

红宝石:

name = "users[107][teacher_type]"

num = name.scan(/\d+/).first
Run Code Online (Sandbox Code Playgroud)

但在JavaScript中我必须这样做,这看起来有点笨重.

JavaScript的:

var name = "users[107][teacher_type]"

var regexp = new RegExp(/\d+/)

var num = regexp.exec(name)[0]
Run Code Online (Sandbox Code Playgroud)

有没有办法在不构建RegExp对象的情况下拉出匹配的部分?也就是Ruby的String#scan的单行代码?

另外,作为旁注,由于此字符串将始终具有相同的格式,因此我可以使用.replace进行此操作.这不是一个聪明的解决方案,但我再次遇到JavaScript问题.

在Ruby中:

num = name.gsub(/users\[|\]\[teacher_type\]/,"")
Run Code Online (Sandbox Code Playgroud)

但是当我在JavaScript中尝试这个时,它不喜欢正则表达式中间的or(|):

在JavaScript中:

//works

num = name.replace(/users\[/, "").replace(/\]\[teacher_type\]/,"")

//doesn't work

num = name.gsub(/users\[|\]\[teacher_type\]/,"")
Run Code Online (Sandbox Code Playgroud)

谁能让我直截了当?

javascript regex

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

使用I18n覆盖模型属性名称 - 无法使其正常工作

我试图将用于描述我的用户模型的"登录"属性的字符串覆盖为"用户名".我认为这是设置的vendor/rails/activerecord/lib/active_record/locale/en.yml.我尝试在这里和我的config/locales/en.yml文件中更改它,并且在任何情况下它都不起作用(我在每次更改后重新启动服务器).

在这两种情况下都是这样做的:

en:
...
  activerecord:
    attributes:
         user:
           login: User Name
Run Code Online (Sandbox Code Playgroud)

当我测试它时,例如f.label:在我的新用户表单中登录,它出现为"登录"而不是"用户名".我是否因为这些东西是如何运作的一些根本错误而努力,或者它真的不起作用?无论哪种方式,任何人都可以告诉我如何解决它?谢谢,最大

ruby-on-rails internationalization

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

Rails3和readline问题

我在rvm中第一次使用rails3(我多年来一直使用rails2).试图启动控制台,我收到此错误:

require': no such file to load -- readline

我用Google搜索,这似乎是一个常见的问题.大多数解决方案似乎包括1)安装以下:sudo apt-get install libncurses5-dev libreadline5-dev 2)要为readline的宝石文件夹,运行ruby extconf.rb做产生一个makefile 3)makemake install

现在,我没有在我的rvm中安装readline,所以我尝试安装它.但无法弄清楚宝石是什么:gem install readline没有给出任何结果.我找到的唯一一个是gem install rdp-rb-readline.我安装了两个dev库,安装了rdp-rb-readline gem,转到后续的gem文件夹,然后运行ruby extconf.rb.这确实生成了一个makefile.但我不能makemake install:我得到这些错误:

max-laptop:readline$ make cc -I. -I. -I/usr/lib/ruby/1.8/i486-linux -I. -DHAVE_READLINE_READLINE_H -DHAVE_READLINE_HISTORY_H -DHAVE_RL_FILENAME_COMPLETION_FUNCTION -DHAVE_RL_USERNAME_COMPLETION_FUNCTION -DHAVE_RL_COMPLETION_MATCHES -DHAVE_RL_DEPREP_TERM_FUNCTION -DHAVE_RL_COMPLETION_APPEND_CHARACTER -DHAVE_RL_BASIC_WORD_BREAK_CHARACTERS -DHAVE_RL_COMPLETER_WORD_BREAK_CHARACTERS -DHAVE_RL_BASIC_QUOTE_CHARACTERS -DHAVE_RL_COMPLETER_QUOTE_CHARACTERS -DHAVE_RL_FILENAME_QUOTE_CHARACTERS -DHAVE_RL_ATTEMPTED_COMPLETION_OVER -DHAVE_RL_LIBRARY_VERSION -DHAVE_RL_EVENT_HOOK -DHAVE_RL_CLEANUP_AFTER_SIGNAL -DHAVE_RL_CLEAR_SIGNALS -DHAVE_RL_VI_EDITING_MODE -DHAVE_RL_EMACS_EDITING_MODE -DHAVE_REPLACE_HISTORY_ENTRY -DHAVE_REMOVE_HISTORY -fPIC -fno-strict-aliasing -g -g -O2 -fPIC -c readline.c readline.c: In …

ruby ruby-on-rails readline rvm ruby-on-rails-3

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

当您知道用户名和密码时,通过反CSRF将用户登录到站点

这听起来有点邪恶,但我要忍受.它也不是特定的Rails问题,即使这两个站点使用Rails.(对这两件事情提前道歉)

想象一下两个网站都使用Ruby on Rails:

  • mysite.com,我是一名开发人员,在更改代码等方面拥有完全访问权限,并且还有管理员登录,因此我可以管理用户帐户.

  • theirsite.com,我有一个管理员登录但没有开发访问权限.我知道管理它的人但我宁愿不出于政治原因向他们提出任何好处.然而,这是一个选择.

在每个网站上使用我的管理员登录,我为同一个人创建了一个用户帐户.当他们登录mysite.com时,我希望能够提供一个按钮,将它们直接登录到theirsite.com.我将他们用于theirsite.com的用户名和密码存储在mysite.com数据库的用户记录中,以方便这一点.该按钮是表单的提交按钮,该表单复制了theirsite.com登录页面上的表单,其中包含用户名和密码的隐藏字段.

绊脚石是theirsite.com使用authenticity_token变量处理CSRF,当登录从mysite.com提交时,验证失败.

我第一次试图通过这个,在mysite.com控制器中加载带有表单的页面,刮掉theirsite.com登录页面以获取真实性令牌,然后将其插入我的表单.但这不起作用.

如果我在两个浏览器选项卡中加载theirsite.com登录页面和带有远程登录按钮的mysite.com页面,并手动将theirsite.com表单中的authenticity_token复制到mysite.com表单,那么它可以正常工作.这是因为(我认为)authenticity_token通过cookie链接到我的会话,当我在同一个浏览器中完成所有会话时,会话匹配,但是当我通过抓取从theirsite.com获取真实性令牌时(使用Nokogiri但是我可以使用curl而不是相同的会话.

问题A)所以,我认为我还需要设置一个cookie,以便会话在浏览器和我所做的Nokogiri请求之间匹配.但是,这可能是不可能的,而且正是反CSRF系统旨在打败的那种东西.是这样的吗?

问题B)让我说我决定,尽管有政治因素,我还是要求theirsite.com的所有者进行一些小改动,以便在我们知道他们的theirsite.com用户名和密码时让我们将用户登录到theirsite.com .我可以要求他们做出的最小,最安全的变化是什么?

请随意说"脱掉你邪恶的黑帽子",我认为这是一个有效的回应.问题有点狡猾.

authentication ruby-on-rails cross-domain

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

由退格键触发但不是删除键的事件

我有一个使用乔恩Zaefferer的"自动完成" jQuery插件,表单字段.如果我键入一些文本,然后选择它的一部分并点击退格键,则自动完成列表会更新.但是如果我点击删除而不是退格,则自动完成列表会消失.

我期待在该插件的代码,它看起来像自动完成更新由该领域的keydown事件触发,都退格键和删除触发器的keydown.

退格和删除之间是否存在根本区别?

jquery autocomplete keycode jquery-plugins jquery-autocomplete

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

ActiveRecord:除非另有说明,否则在保存之前,所有文本字段都会调用它们

多年来,我遇到各种网站的各种问题,用户在字符串和文本字段的开头/结尾放置空格.有时这些会导致格式化/布局问题,有时它们会导致搜索问题(即搜索顺序看起来错误,即使它不是真的),有时它们实际上会使应用程序崩溃.

我认为这将是有益的,而不是把一堆before_save回调,因为我在过去所做的那样,添加一些功能,ActiveRecord的,在保存之前自动调用.strip任何字符串/文本字段,除非我告诉它不,例如do_not_strip :field_x, :field_y在类定义的顶部使用或类似的东西.

在我去弄清楚如何做到这一点之前,有没有人见过更好的解决方案?为了清楚起见,我已经知道我可以做到这一点:

before_save :strip_text_fields

def strip_text_fields
  self.field_x.strip!
  self.field_y.strip!
end
Run Code Online (Sandbox Code Playgroud)

但我正在寻找一种更好的方式.

干杯,最大

ruby activerecord ruby-on-rails trim strip

5
推荐指数
2
解决办法
2327
查看次数

无法使jstree工作 - "Uncaught TypeError:Object#<Object>没有方法'委托'"

我试图让jstree插件工作,遵循此页面上的"预定义HTML"示例: http://luban.danse.us/jazzclub/javascripts/jquery/jsTree/reference/_examples/1_datasources.html

为了避免与可能发生的任何其他事情发生任何冲突,我试图在最简单的页面中,在我的公共Dropbox文件夹中使用它: http://dl.dropbox.com/u/846812/jstree_example/jstree_example.html

我在页面中包含的唯一js是jquery和主jstree文件jsTree/jquery.jstree.js.(关于我究竟需要包含什么,文档有点不稳定,但也许这就是问题).我下载的其余文件jquery.jstree.js位于jsTree文件夹旁边.

我还有一个预定义的html,一个id ="folder_tree"的div中的嵌套列表.

当javascript运行时,我Uncaught TypeError: Object #<Object> has no method 'delegate'jquery.jstree.js文件的第3629行收到错误- 希望你也会看到这个错误.

任何人都可以查看页面(上面的Dropbox链接),看看我做错了什么?谢谢,最大

(请注意,该页面中的文件链接不起作用 - 它们不需要为了使jstree工作)

javascript jquery jstree

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

Cucumber(rails 2)没有加载jQuery

我有一个黄瓜场景标记,@javascript我正在测试它与一些非常基本的内联js调用.我正在使用它

Capybara.javascript_driver =:webkit

如果我在页面上执行此操作,在有问题的元素之后(具有id ="ajax_test_results",不要担心ajax,现在)

document.getElementById('ajax_test_results').innerHTML = 'Replaced with basic js, ie not jquery, without waiting for pageLoad';  
Run Code Online (Sandbox Code Playgroud)

然后它的工作原理:如果我在测试中渲染出页面,我可以看到js已经运行并更新了内容.但是,如果我尝试用jquery做同样的事情

jQuery("#ajax_test_results").html("updated with basic jquery dom manipulation, without waiting for document.ready");  
Run Code Online (Sandbox Code Playgroud)

那它不起作用.我认为jquery没有加载,但我不知道如何调试它.

任何人的想法?我看到这篇文章看起来很有希望/sf/ask/589988381/但是config.assets.debug = true对我来说却是一个错误 - 我认为它只是rails 3.有轨道2相当于?或其他一些解决方案?

感谢任何建议 - 最多

jquery ruby-on-rails cucumber capybara-webkit

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

Linux - client_body_in_file_only - 如何设置临时文件的文件权限?

我们在nginx中使用client_body_in_file_only选项,以允许通过Ajax上传文件.配置如下所示:

location ~ ^(\/path1|\path2)$ {

  limit_except POST { deny all; }
  client_body_temp_path      /path/to/app/tmp;
  client_body_in_file_only   on;
  client_body_buffer_size    128K;
  client_max_body_size       1000M;

  #this option is a quick hack to make sure files get saved on (ie this type of request goes to) on a specific server
  proxy_pass                 http://admin;
  proxy_pass_request_headers on;
  proxy_set_header           X-FILE $request_body_file;
  proxy_set_body             off;
  proxy_redirect             off;

  # might not need?
  proxy_read_timeout         3m;
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,但处理请求的Web服务器进程(Mongrel)必须具有进入sudo的临时文件headers['X-FILE'],然后才能对其执行任何操作.这是因为临时文件具有600权限.

我对这种方法不满意,这要求我们编辑/etc/sudoers文件以允许Web服务器用户在sudo chmod没有密码的情况下进行操作.感觉非常不安全.

有没有办法,使用nginx配置,更改创建的临时文件的权限,例如775?

编辑:我只是尝试umask在nginx init配置中更改选项的值,然后重新启动nginx,但它没有帮助.它一直在0022 …

file nginx temp

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

确定数组/字符串中最大匹配序列的有效方法(在 Ruby 中)?

假设我有两个单词数组:

array1 = ["hello", "world", "i", "am", "in", "the", "world"]
array2 = ["This", "is", "the", "hello", "world", "message"]
Run Code Online (Sandbox Code Playgroud)

其中,可以很容易地用两个字符串表示:

string1 = "hello world i am in the world"
string2 = "This is the hello world message"
Run Code Online (Sandbox Code Playgroud)

让我们假设我现在要使用数组。

我想找到在array1中以相同顺序出现的array2的最大子数组。

所以,如果你打算以可以想象的最慢的方式来做,比如说,你会说:

  • 从 array2 中获取所有 6 字子数组(其中有一个)。
    • 它是否以该顺序出现在 array1 中?不
  • 从 array2 中获取所有 5 字子数组(其中有两个)。
    • 它们中的任何一个都以该顺序出现在array1中吗?不
  • 从 array2 中获取所有 4 字子数组。
    • 它们中的任何一个都以该顺序出现在array1中吗?不
  • 等等,直到我们到达
  • 从 array2 中获取所有 2 字子数组。
    • 它们中的任何一个都出现在 array1 中吗?是: ["hello", "world"] 确实如此。停止。

但是,这感觉起来效率很低。谁能看到更好的方法?我正在使用 Ruby,但我对通用算法以及如何使用该特定语言进行操作感兴趣。

请注意,这不仅仅是数组交集,因为(至少在 ruby​​ 中)不关心元素的 …

ruby arrays algorithm match

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