小编pat*_*ick的帖子

帮助"可扩展的JavaScript应用程序架构"

我建立一个大型的JavaScript应用程序,我决定使用尼古拉斯Zakas的可扩展应用程序的架构设计: http://developer.yahoo.com/yui/theater/video.php?v=zakas-architecture

根据他的系统,模块是自封装的,彼此不了解......但是我在项目中遇到了很多实例,模块似乎需要彼此了解,因为它们本质上是个体整体的一部分.

例如..我有三个模块:上传,窗口和管理器.

单击上载选项时,将打开一个带有上载表单的弹出窗口.窗口"manager"上也有一个链接.

单击管理器链接会更新弹出窗口以显示管理工具...

...

它对我来说最有意义(伪代码):

upload module:
  upload option click --> sandbox.notification('need pop up window', [...html markup for form...])

manager module:
  manager link click --> sandbox.notification('need pop up window', [...html markup for admin tools...])

window module:
  sandbox.listen('need pop up window') --> calls createPopUpWindow( passed in html markup  )
Run Code Online (Sandbox Code Playgroud)

...然而这违背了哲学原因,因为上传和管理器模块专门"请求"窗口模块做某事,因此他们知道它...

所以,我能想到的另一种方法是:

upload module:
  upload option click --> sandbox.notification('upload option clicked', [...html markup for form...])

manager module:
  manager link click --> sandbox.notification('manager link clicked', [...html markup for admin tools...]) …
Run Code Online (Sandbox Code Playgroud)

javascript design-patterns publish-subscribe

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

如何使用google maps api从通用地址轻松获取邮政编码?

我正在尝试获取通用地址的邮政编码,例如"los angeles,ca".当我这样做:

gcode = new google.maps.Geocoder()
gcode.geocode({'address': 'Los Angeles, CA'}, function(results, status) { log(results); });
>> [Object { address_components=[4], formatted_address="Los Angeles, CA, USA", geometry={...}, more...}]
Run Code Online (Sandbox Code Playgroud)

我得到一个没有邮政编码的对象返回...但是,如果我然后从那里返回的位置对象,那么我可以访问一个zipcode:

gcode.geocode({'latLng': results[0].geometry.location}, function(results, status) { log(results[0].address_components[7].long_name) });
>> "90012"
Run Code Online (Sandbox Code Playgroud)

..但这似乎很浪费,因为我不得不两次打电话给API来做这件事.有没有办法强迫谷歌最初给我一个邮政编码?

google-maps geolocation

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

OAuth"无效的验证码格式"

我有一个生产应用程序,有时我看到这个错误出现在日志中..我似乎无法复制它在我的结尾,所以似乎有一个用户在那里的某些特定设置/ cookies /等导致这个问题.我不知道......该日志表明,该用户被重定向到这个回调URL:"用户/认证/ Facebook的/回调代码= AQCayaAoFOruFgwbfg1D682j8DbxOt0CZYNH3Vv5RtYKlQgSzISyN8ygTn25W_RTl3fu35cS1-tl5ArZ9B_XylwORP0hGU6st8P6TyTYUzfiR1m0poaSRkX-KBeWiBvT6IUsm-Af0VJcUNTQPg-dM1F9y5CgJ2bTJEJqhCE9wYlvkUY3kguwcl3TQ48FTT4-PHA ///?"

实际错误是:

RuntimeError: #<OAuth2::Response:0x1da7fae0 @error=#<OAuth2::Error: OAuth2::Error>, @options={:parse=>:query}, @parsed={"{\"error\":{\"message\":\"Invalid verification code format.\",\"type\":\"OAuthException\"}}"=>nil}, @response=#<Faraday::Response:0x1da8fa80 @on_complete_callbacks=[], @env={:response=>#<Faraday::Response:0x1da8fa80 ...>, :request_headers=>{"Content-Type"=>"application/x-www-form-urlencoded"}, :body=>"{\"error\":{\"message\":\"Invalid verification code format.\",\"type\":\"OAuthException\"}}", :status=>400, :url=>#<Addressable::URI:0xed52bf0 URI:https://graph.facebook.com/oauth/access_token>, :request=>{:proxy=>nil}, :parallel_manager=>nil, :response_headers=>{"expires"=>"Sat, 01 Jan 2000 00:00:00 GMT", "access-control-allow-origin"=>"*", "content-type"=>"text/javascript; charset=UTF-8", "connection"=>"close", "www-authenticate"=>"OAuth \"Facebook Platform\" \"invalid_code\" \"Invalid verification code format.\"", "date"=>"Thu, 13 Oct 2011 15:58:29 GMT", "content-length"=>"81", "cache-control"=>"no-store", "x-fb-rev"=>"457598", "x-fb-server"=>"10.65.13.60", "pragma"=>"no-cache"}, :ssl=>{:ca_file=>"/etc/pki/tls/certs/ca-bundle.crt"}, :method=>:post}>>
Run Code Online (Sandbox Code Playgroud)

参数是:

{"code"=> "AQCayaAoFOruFgwbfg1D682j8DbxOt0CZYNH3Vv5RtYKlQgSzISyN8ygTn25W_RTl3fu35cS1-tl5ArZ9B_XylwORP0hGU6st8P6TyTYUzfiR1m0poaSRkX-KBeWiBvT6IUsm-Af0VJcUNTQPg-dM1F9y5CgJ2bTJEJqhCE9wYlvkUY3kguwcl3TQ48FTT4-PhA///",
"action"=>"",
"controller"=>""}
Run Code Online (Sandbox Code Playgroud)

我知道如果我手动转到"users/auth/facebook/callback?code = blah"它会触发同样的错误,因为回调代码参数显然是假的,但看起来并没有任何关于实际代码的可疑信息.用户的参数哈希 - 所以我想知道为什么它会是一个无效的格式?

还有其他人经历过这个吗?

ruby-on-rails oauth facebook-graph-api

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

如何修复造成"业力警告[网络服务器]:404"的图像?

我有一个带有模板的角度指令,其执行的操作类似于:

<img ng-src="{{url}}" />
Run Code Online (Sandbox Code Playgroud)

在我的测试中,我正在设置范围,以便url指向一个虚构的图像...... Karma然后说:

WARN [web-server]: 404: /fake.png
Run Code Online (Sandbox Code Playgroud)

所以我进入我的业力配置文件并添加到文件数组:

{pattern: 'spec/javascripts/fixtures/**/*.png', watched: false, included: false, served: true},
Run Code Online (Sandbox Code Playgroud)

然后添加代理:

proxies: {
  '/fake.png': 'spec/javascripts/fixtures/assets/fake.png'
}
Run Code Online (Sandbox Code Playgroud)

...

现在我得到:

WARN [proxy]: failed to proxy spec/javascripts/fixtures/assets/fake.png ([object Object])
Run Code Online (Sandbox Code Playgroud)

那条路是正确的,那里有一个名为fake.png的真实图像.

我的配置中的basePath也正确设置为我项目的根目录...

karma-runner karma-jasmine

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

嵌套的content_tags转义内部html ..为什么?

所以,如果我循环并创建一个li/a标签的集合,我会按预期得到..这些标签的数组:

(1..5).to_a.map do
  content_tag(:li) do
    link_to("boo", "www.boohoo.com")
  end
end

=> ["<li><a href=\"www.boohoo.com\">boo</a></li>", "<li><a href=\"www.boohoo.com\">boo</a></li>", "<li><a href=\"www.boohoo.com\">boo</a></li>", "<li><a href=\"www.boohoo.com\">boo</a></li>", "<li><a href=\"www.boohoo.com\">boo</a></li>"] 
Run Code Online (Sandbox Code Playgroud)

我打电话给他们加入我得到一个预期的字符串......

(1..5).to_a.map do
  content_tag(:li) do
    link_to("boo", "www.boohoo.com")
  end
end.join

=> "<li><a href=\"www.boohoo.com\">boo</a></li><li><a href=\"www.boohoo.com\">boo</a></li><li><a href=\"www.boohoo.com\">boo</a></li><li><a href=\"www.boohoo.com\">boo</a></li><li><a href=\"www.boohoo.com\">boo</a></li>" 
Run Code Online (Sandbox Code Playgroud)

但是,如果我在ol标签中深入嵌套这一级...

content_tag(:ol) do
  (1..5).to_a.map do
    content_tag(:li) { link_to("boo", "www.boohoo.com") } 
  end.join
end

 => "<ol>&lt;li&gt;&lt;a href=&quot;www.boohoo.com&quot;&gt;boo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;www.boohoo.com&quot;&gt;boo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;www.boohoo.com&quot;&gt;boo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;www.boohoo.com&quot;&gt;boo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;www.boohoo.com&quot;&gt;boo&lt;/a&gt;&lt;/li&gt;</ol>"
Run Code Online (Sandbox Code Playgroud)

我逃脱了内心的疯狂!

在查看rails源代码时:

  def content_tag(name, content_or_options_with_block = nil, options = nil, escape = true, &block)
    if block_given?
      options = content_or_options_with_block if content_or_options_with_block.is_a?(Hash)
      content_tag_string(name, capture(&block), options, escape) …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-3

8
推荐指数
2
解决办法
4876
查看次数

为什么我的IRB提示符使用ANSI颜色代码会破坏页面向上/向下的复制/粘贴行为?

我加入了我的.irbrc:

IRB.conf[:PROMPT].reverse_merge!(:RAILS_ENV => {:PROMPT_I=>"#{current_app} #{rails_env} #{prompt} ", :PROMPT_N=>"#{current_app} #{rails_env} #{prompt} ", :PROMPT_S=>nil, :PROMPT_C=>"?> ", :RETURN=>"=> %s\n"}) 
IRB.conf[:PROMPT_MODE] = :RAILS_ENV
Run Code Online (Sandbox Code Playgroud)

如果我这样做:

current_app = "\e[31mfoo_bar_app\e[0m"
rails_env = "\e[32m#{RAILS_ENV}\e[0m"
Run Code Online (Sandbox Code Playgroud)

然后提示显示漂亮的颜色,但如果我将一些文本复制到我的copybuffer并粘贴它,如果我进行页面向上/向下翻页以转到当前输入的文本的开头/结尾,我的光标就像跳转到在页面向上的文本中间,对于向下翻页,它向右跳到一个没有输入任何内容的空白区域,然后我的光标位置完全搞砸了.

有没有办法可以纠正这个问题?我真的很喜欢彩色提示.

ruby irb

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

使用 REST 获取多个资源(批量获取)的正确方法是什么?

是吗:

GET api/stuff?ids[]=123&ids[]=456&ids[]=789&ids[]=101112&etc...
Run Code Online (Sandbox Code Playgroud)

是吗:

POST api/stuff/batch
  body: ids: [123, 456, 789, 101112, etc]
Run Code Online (Sandbox Code Playgroud)

?

第一个在语义上似乎是正确的,但除了有一个令人难以置信的粗俗 url,还有消息来源说 get 的长度可能有限制,那么如果我有无数个 id 怎么办?

第二个似乎更好,因为没有粗略的 url,但我对休息的理解是 POST 应该进行更改,而不是幂等的。

那么这纯粹是一个语义问题,没有真正的“正确”方式吗?

rest api-design

8
推荐指数
3
解决办法
5660
查看次数

如何使用.js.erb将ruby数据结构转换为javascript数据结构?

我有一个.js.erb模板,我正在做:

var foo = <%= [1,2,3] %>;
var foo2 = <%= [1,2,3].to_json %>;
var foo3 = <%= ["bar"].to_json %>;
var foo4 = <%= {:foo => "bar"}.to_json %>;
Run Code Online (Sandbox Code Playgroud)

foo等于123

foo2等于[1,2,3]

foo3未定义(因为浏览器抱怨解析错误)

foo4未定义(因为浏览器抱怨解析错误)


我能弄清楚如何使foo3工作的唯一方法是:

var foo3 = "<%= ['bar'].to_json %>";    # foo3 => "[&quot;bar&quot;]"
foo3.replace(/&quot;/g, "\""))          # => "['bar']"  <-- looks like eval should work...
eval(foo3.replace(/&quot;/g, "\""))[0]; # => "bar" ... it works
Run Code Online (Sandbox Code Playgroud)

我无法以这种方式工作......我尝试过:

var foo4 = <%= "{:foo => 'bar'}.to_json" %>;  # foo4 => "{&quot;foo:&quot;:&quot;bar&quot;}" %>;
foo4.replace(/&quot;/g, "\""));               # => "{"foo":"bar"}" …
Run Code Online (Sandbox Code Playgroud)

javascript ruby ruby-on-rails

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

"具有'弱'属性的属性必须是对象类型"真正意味着什么?

我在我的界面中有这个:

@property (nonatomic, weak) NSTimeInterval *timeStamp;
Run Code Online (Sandbox Code Playgroud)

其中我的逻辑告诉我,我需要一个时间戳对象,只有将是由此类实例化它的上下文中使用,所以"弱"似乎是合乎逻辑的我 - 但XCode的告诉我:"产权与'弱'属性必须是对象类型"...如果我只是这样做:

@property (nonatomic) NSTimeInterval *timeStamp;
Run Code Online (Sandbox Code Playgroud)

然后错误就消失了,但我不确定我明白为什么......

objective-c ios

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

rails 3获取具有多个关联记录的记录的计数(has_many)

我可以获得拥有多个用户的帐户集合:

Account.group('accounts.id HAVING count(users.id) > 1').joins(:users)
Run Code Online (Sandbox Code Playgroud)

但是,只要我在该对象上调用.count,就会发生巨大的爆炸:

(0.3ms)SELECT COUNT(*)AS count_all,accounts.id HAVING count(users.id)> 1 AS accounts_id_having_count_users_id_1 FROM"accounts"INNER JOIN"users"ON"users"."account_id"="accounts"."id "GROUP BY accounts.id HAVING count(users.id)> 1 ActiveRecord :: StatementInvalid:PG :: Error:ERROR:语法错误在"AS"处或附近第1行:... unt_all,accounts.id HAVING count(用户) .id)> 1个AS帐户......

似乎在postgres中,我想要的实际查询是:

select count(*) from (SELECT accounts.id FROM "accounts" INNER JOIN "users" ON "users"."account_id" = "accounts"."id" GROUP BY accounts.id HAVING count(users.id) > 1) as a;
Run Code Online (Sandbox Code Playgroud)

如何获取activerecord来生成此(或类似的)查询?

activerecord ruby-on-rails

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