小编Mik*_*mer的帖子

在另一个域上使用RESTful Web服务的正确"Rails方式"是什么?

我想编写一个Ruby on Rails应用程序,它使用RESTful Web服务API对结果执行一些逻辑,然后在我的视图上显示该数据.例如,假设我想编写一个在search.twitter.com上搜索的程序.使用纯ruby我可能会创建以下方法:

def run(search_term='', last_id=0)
  @results = []
  url = URI.parse("http://search.twitter.com")
  res = Net::HTTP.start(url.host, url.port) do |http|
    http.get("/search.json?q=#{search_term}&since_id=#{last_id.to_s}")
  end
  @results = JSON.parse res.body
end
Run Code Online (Sandbox Code Playgroud)

我很想把这个方法作为私有方法放到我的Rails控制器中,但我的一部分认为有更好的,更"Rails"的方法来做到这一点.有最佳实践方法还是这是最好的方法?

rest ruby-on-rails

55
推荐指数
3
解决办法
4万
查看次数

如何在javascript字符串中转义&符号以使页面验证严格?

我试图使用JQuery将dataString传递给ajax调用.在调用中,我构造了get参数,然后将它们发送到接收端的php页面.麻烦的是数据字符串中有&符号,HTML严格验证器正在插入它.

这是代码:

$(document).ready(function(){
    $("input#email").focus();
    $('#login_submit').submit(function(){
        var username = $('input#email').val();
        var password = $('input#password').val();
        var remember = $('input#remember').attr("checked");
        var dataString = "email="+username+"&password="+password+"&remember="+remember;
        $.post('login.php', dataString, function(data) {
            if (data == 'Login Succeeded.') {
                location.reload(true);
            } else {
                $("input#email").focus();
                $("#login_msg").html(data).effect("pulsate", {times: 2}, 1000); 
            }
        });         
        return false;
    });
});
Run Code Online (Sandbox Code Playgroud)

以下是验证器消息的示例:无法为通用实体"password"生成系统标识符.

var dataString = "email="+username+"&password="+password+"&remember="+rememb…
Run Code Online (Sandbox Code Playgroud)

(在验证器中,第一个&符号后面的"p"标记为红色,表示失败点).

javascript ajax jquery w3c-validation

30
推荐指数
3
解决办法
5万
查看次数

如何在CouchDB上执行参数化查询

我想使用CouchDB为我存储一些数据,然后使用RESTful api调用来获取我需要的数据.我的数据库名为"test",我的文档都有类似的结构,看起来像这样(其中hello_world是文档ID):

"hello_world" : {"id":123, "tags":["hello", "world"], "text":"Hello World"}
"foo_bar" :{"id":124, "tags":["foo", "bar"], "text":"Foo Bar"} 
Run Code Online (Sandbox Code Playgroud)

我希望能够做的是让我的用户发送一个查询,例如:"给我所有包含'hello world'字样的文档.例如.我一直在玩视图,但它看起来像他们只允许我将这些值中的一个或多个移动到map函数的"key"部分.这使我能够做到这样的事情:

http:// localhost:5984/test/_design/search/_view/search_view?key = "hello"

但这不允许我让我的用户指定他们的查询字符串.例如,如果他们搜索"hello world"怎么办?我必须做两个查询:一个用于"hello",一个用于"world"然后我必须编写一堆javascript来组合结果,删除重复项等(YUCK!).我真正想要的是能够做这样的事情:

http:// localhost:5984/test/_design/search/_view/search_view?term = "hello world"

然后在views map/reduce函数中使用参数"hello world"来查找tags数组中同时包含"hello"和"world"的所有文档.CouchDB甚至可以做到这一点吗?还有另一种方法可以在我没想到的视图中实现这一目标吗?

couchdb

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

如何将带括号的Ruby字符串转换为数组?

我想将以下字符串转换为数组/嵌套数组:

str = "[[this, is],[a, nested],[array]]"

newarray = # this is what I need help with!

newarray.inspect  # => [['this','is'],['a','nested'],['array']]
Run Code Online (Sandbox Code Playgroud)

ruby arrays

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

什么是lambda,什么是示例实现?

我对编程很新,在做很多阅读时,这个lambda的概念不断出现,但是我很难理解它实际上是什么,如何实现它将使我的编程生活变得更好.首先,什么是lambda,第二,它是如何实现的?

感谢所有发布的人.正如评论中提到的,这是重复的,但是这里有很多很棒的答案,我想为社区保留它们,所以我把它变成了一个社区帖子.以下是其他问题的链接:

什么是lambda(函数)?

lambda

6
推荐指数
4
解决办法
2503
查看次数

确定ruby脚本是否已在运行

是否有一种简单的方法可以判断ruby脚本是否已经在运行,然后对其进行适当处理?例如:我有一个名为really_long_script.rb的脚本.我每隔5分钟就跑一次.当它运行时,我想查看上一次运行是否仍在运行,然后停止执行第二个脚本.有任何想法吗?

ruby

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

比较RSpec中包含BigDecimal的哈希

我正在使用RSpec(3.x)来测试行为类似于计算器的对象。该对象将结果放入哈希中。但是我无法在测试中获得正确匹配的哈希值。这是我正在谈论的示例:

class ObjectUnderTest

  def calculate(a, b)
    value = a.to_d / b
    {
      value: value
    {
  end

end
Run Code Online (Sandbox Code Playgroud)

测试如下所示:

RSpec.describe ObjectUnderTest do

   it "calculates the product of two values" do
     o = ObjectUnderTest.new
     expect(o.calculate(1, 3)).to eql({value: 0.333})
   end
end
Run Code Online (Sandbox Code Playgroud)

问题在于0.333是浮点数,哈希中包含的实际值是BigDecimal。如果我在测试中更改了该行,则表示如下内容:

expect(o.calculate(1, 3)).to eql({value: 0.333.to_d(3)})
Run Code Online (Sandbox Code Playgroud)

...测试仍然失败A)因为精度不同,并且B)在我的实际代码中,我有几个键值对,并且我不想在所有代码上都调用k.to_d(some_precision)比较哈希以使其通过。

有没有一种方法可以使用a_value_之类的值与某个范围内的值进行比较,我不必在那里硬编码一个确切的数字吗?

ruby hash rspec

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

在MySQL中强制使用唯一的行

我有一个表MySQL有3个字段,我想强制两个字段之间的唯一性.这是表格DDL:

CREATE TABLE `CLIENT_NAMES` (
`ID` int(11) NOT NULL auto_increment,
`CLIENT_NAME` varchar(500) NOT NULL,
`OWNER_ID` int(11) NOT NULL,
PRIMARY KEY  (`ID`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

ID字段是代理键(此表正在加载ETL).该CLIENT_NAME字段包含客户端名称.id OWNER_ID是指示客户所有者.

我以为我可以用一个唯一索引执行本CLIENT_NAMEOWNER_ID,

ALTER TABLE `DW`.`CLIENT_NAMES` 
ADD UNIQUE INDEX enforce_unique_idx(`CLIENT_NAME`, `OWNER_ID`);
Run Code Online (Sandbox Code Playgroud)

但是MySQL给了我一个错误:

执行SQL命令以更新表时出错.指定密钥太长; 最大密钥长度为765字节(错误1071)

其他人有什么想法吗?

mysql indexing mysql-error-1071

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