在学习Backbone.js 时,我正在使用捆绑了最新版Backbone(0.9.2)的Todos示例应用程序.我的问题是,为什么应用程序设计为在向Todos集合添加模型时触发渲染事件两次?
如果我将此行放在TodoView的渲染功能中:
// Re-render the titles of the todo item.
render: function() {
console.log("Rendering!");
this.$el.html(this.template(this.model.toJSON()));
Run Code Online (Sandbox Code Playgroud)
然后"渲染!" 在控制台中出现两次.我理解这是因为视图将模型的change事件绑定到视图的渲染:
initialize: function() {
this.model.bind('change', this.render, this);
Run Code Online (Sandbox Code Playgroud)
并且在addOne中调用render,它绑定到Todos的add事件:
addOne: function(todo) {
var view = new TodoView({model: todo});
this.$("#todo-list").append(view.render().el);
},
Run Code Online (Sandbox Code Playgroud)
但这是双重渲染设计的标准做法吗?看起来应该在创建(或进入DOM)时呈现视图,然后如果底层模型发生更改则再次呈现.在这种情况下,没有任何更改,但渲染被调用两次.
再一次,我只是学习Backbone,所以我可能会有一个基本的误解,导致我的困惑.
我有一个库,可以Rack::Request在上面做一些事情.
我想从单元测试而不是功能测试中测试它.所以我必须自己创建一个Rack::Request实例,我该怎么做呢?
当我有这样的模块时:
module MyModule
class MyClass
end
end
Run Code Online (Sandbox Code Playgroud)
我可以访问/修改MyModule引用它:
MyModule.const_set("MY_CONSTANT", "value")
Run Code Online (Sandbox Code Playgroud)
但是Root命名空间呢,那个::?,我正在寻找类似的东西:
::.const_set("MY_CONSTANT", "value")
Run Code Online (Sandbox Code Playgroud)
的const_set事情仅仅是一个例子,请不要试图解决这个具体的情况,但实际上在做参考的方式Root命名空间
如果我要求这些数据:
https://graphite.it.daliaresearch.com/render?from=-2hours&until=now&target=my.key&format=json
Run Code Online (Sandbox Code Playgroud)
除了其他数据点之外,我得到了这个:
[
2867588,
1398790800
]
Run Code Online (Sandbox Code Playgroud)
如果我要求这些数据:
https://graphite.it.daliaresearch.com/render?from=-10hours&until=now&target=my.key&format=json
Run Code Online (Sandbox Code Playgroud)
数据点看起来像这样:
[
null,
1398790800
]
Run Code Online (Sandbox Code Playgroud)
当我选择更宽的时间范围时,为什么这个数据点无效?
我看到,对于小于7小时的选定日期范围,数据点的分辨率是每10秒,当选择的日期范围是7小时或更大时,分辨率每1分钟转到一个数据点..并继续这个方向因为所选择的日期范围每10分钟变大一个数据点.
因此,当数据点的分辨率是每10秒数据存在时,当分辨率是每1分钟或更长时间,那么数据点没有值:/
我每1小时发送一个数据点,可能与分辨率配置冲突,我每小时只发送一个数据点
我model在这条道路上有这个:
/my-project/app/models/my-model.js
Run Code Online (Sandbox Code Playgroud)
我想route从这条路径中导入它:
/my-project/app/routes/battles/battle/combats/new.js
Run Code Online (Sandbox Code Playgroud)
导入句子如下所示:
import MyModel from '../../../../models/my-model';
Run Code Online (Sandbox Code Playgroud)
路径是疯了,我必须使用try和error系统来弄清楚它.此外,如果我想在另一个组件中导入相同的模型,我不能只复制和粘贴,因为此路径仅在特定路径中有效.出于同样的原因,如果我更改导入模型的组件的路径,我必须更新导入路径.
我想有相对于项目根的路径,如:
import MyModel from '/models/my-model';
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我正在实现一个 RTL 接口。所有组件和文本都是 RTL,但数字是 LTR。
我使用<span dir="ltr">元素将 LTR 文本插入到主要的 RTL 文本中。
它适用于大多数情况,但不适用于<option>元素:
<div dir="rtl">
<select>
<option>One amount <span dir="ltr">15.000</span> coins</option>
<option>Other amount <span dir="ltr">19?000</span> coins</option>
</select>
</div>
Run Code Online (Sandbox Code Playgroud)
它不工作。
这里有一个 JSfiddle 可以玩:https ://jsfiddle.net/fguillen/2hngzv3d/
当所有配置都正确时,我在控制台中看到此错误
Cannot load `Rails.config.active_storage.service`: (RuntimeError) Missing service adapter for "S3"
Run Code Online (Sandbox Code Playgroud) 我有MyModel:
has_one_attached :video
Run Code Online (Sandbox Code Playgroud)
我发现我可以这样做:
my_model = MyModel.create!()
my_model.video.attach(io: File.open("path/my_video.webm"), filename: "video.webm")
Run Code Online (Sandbox Code Playgroud)
并且它工作正常。
但我想知道是否有一种方法可以将附件分配到调用中,create()例如:
MyModel.create!(
video: File.read("path/my_video.webm")
)
Run Code Online (Sandbox Code Playgroud)
如果我执行上述操作,我会看到此错误:
/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activesupport-6.1.4.1/lib/active_support/message_verifier.rb:176:in `verify': ActiveSupport::MessageVerifier::InvalidSignature (ActiveSupport::MessageVerifier::InvalidSignature)
我试过这个:
MyModel.create!(
video: File.open("path/my_video.webm")
)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/activestorage-6.1.4.1/lib/active_storage/attached/changes/create_one.rb:74:在`find_or_build_blob'中:找不到或构建blob:预期可附加,得到#File:/Users/fernando.guillen/Development/PlaycocolaBackend/test/fixtures/files/video.webm(ArgumentError)
有这个:
class Event < ActiveRecord::Base
belongs_to :historizable, :polymorphic => true
end
user = User.create!
Run Code Online (Sandbox Code Playgroud)
我可以:
Event.create!(:historizable => user)
Run Code Online (Sandbox Code Playgroud)
但我不能:
Event.where(:historizable => user)
# Mysql2::Error: Unknown column 'events.historizable' in 'where clause'
Run Code Online (Sandbox Code Playgroud)
我必须这样做:
Event.where(:historizable_id => user.id, :historizable_type => user.class.name)
Run Code Online (Sandbox Code Playgroud)
重现问题的代码:https://gist.github.com/fguillen/4732177#file-polymorphic_where_test-rb
当请求的URL没有响应状态时,200Elastic Beanstalk会将任务再次放入队列中.
如何配置号码或重试?
我知道解释什么地方隐藏在背后ErrorVisibilityTimeout,InactivityTimeout,Dead Letter Queues...但这些概念还没有在我的脑海低效增长的绿色.
例如,我只想配置最大重试次数0,因此尝试但不重试.
worker amazon-sqs amazon-web-services amazon-elastic-beanstalk
ruby ×4
javascript ×2
activerecord ×1
amazon-sqs ×1
backbone.js ×1
css ×1
ember-cli ×1
ember.js ×1
ember.js-2 ×1
graphite ×1
html ×1
localization ×1
rack ×1
request ×1
unit-testing ×1
worker ×1