只是想知道是否有一个Ruby习惯用法从索引中提取子字符串直到字符串结尾.我知道str[index..-1]它在一个范围内的对象传递给工作String的[]方法,但它是一个有点笨拙.例如,在python中,您可以编写str[index:]哪些内容可以隐式地获取字符串的其余部分.
例:
s = "hello world"
s[6..-1] # <-- "world"
Run Code Online (Sandbox Code Playgroud)
还有什么比这更好的s[6..-1]吗?
在我的一个Rails应用程序中,ExecJS没有显示coffeescript编译错误的行号.我的编译错误消息将如下所示:
ExecJS::RuntimeError in Referrals#new
Showing ~/MyApp/app/views/layouts/application.html.erb where line #6 raised:
SyntaxError: unexpected IDENTIFIER
(in ~/MyApp/assets/javascripts/utils.js.coffee)
Run Code Online (Sandbox Code Playgroud)
请注意,咖啡脚本源没有行号(第6行用于erb文件).
在我的另一个应用程序中,我仍然在获取行号,语法错误如下所示:
ExecJS::ProgramError in Projects#show
Showing ~/OtherApp/app/views/layouts/application.html.erb where line #17 raised:
Error: Parse error on line 6: Unexpected 'STRING'
(in ~/OtherApp/app/assets/javascripts/projects.js.coffee)
Run Code Online (Sandbox Code Playgroud)
所以看起来不同的是,它ExecJS::ProgramError会给出行号,而ExecJS::RuntimeError不是.
任何人都知道如何获得行号?为什么我的应用程序在咖啡资产编译时创建RuntimeErrors,而另一个是给出ProgramErrors?我检查过Rails,它们似乎匹配.
请注意,如果我修复编译错误,应用程序运行正常(例如,咖啡文件实际上已经编译) - 但是让这些行号指向编译错误会很好!
编辑
我意识到无论是ExecJS Runtimeerror还是ProgramError似乎并不重要 - 在第一个应用程序中,从来没有给出行号,而在第二个应用程序中,总是有.
我想更改zsh中输入文本的颜色(我为每个命令键入的文本).例如:user@host> ls ~/我希望ls ~/ 黄色从标准输出中脱颖而出.
我知道我可以用bash来完成这个
export PS1=" $BIGreen \u@\h \w \$ $IYellow"
Run Code Online (Sandbox Code Playgroud)
在提示结束时,颜色设置为黄色,输入文本I类型为黄色(定义了适当的颜色变量).然后
trap 'echo -ne "\e[0m"' DEBUG
Run Code Online (Sandbox Code Playgroud)
当显示我的命令输出时,会将颜色重置为正常.
我怎样才能在zsh中实现这一目标?目前,我有
PROMPT=$'{$fg[green]%}%n@%{$fg[green]%}%m %# %{$fg[yellow]%}'
Run Code Online (Sandbox Code Playgroud)
在.zshrc中(最后将颜色设置为黄色)但它不起作用.(我也不知道如何在命令后将颜色设置回白色).
假设我有一个Action对象列表,它对应于Ember模型.每个都有一些属性(时间戳)和一个detail属性,它可以递归地包含更多的details(任意深度嵌套).您可以将详细信息视为嵌套列表.
我想编写一个UI,允许detail对任何Action对象进行简单编辑(自动完成值,轻松复制和粘贴,重新排序元素等).
现在,我的DetailView模板将递归渲染额外的DetailViews:
{{#if view.content.hasChildren}}
{{#each child in view.content.children}}
{{#DetailView contentBinding=child}}
{{/each}}
{{#else}}
{{#EditDetailView contentBinding=view.content.value}}
{{/if}}
Run Code Online (Sandbox Code Playgroud)
因此,每个DetailsView对应于Details对象树中的一个节点.
但我不清楚如何添加控制器到混合 - 我需要存储/功能实现的额外状态(例如,转换Detail对象中的值以在DetailsView中显示;处理插入/删除/重新排序元素的事件;更改"详细信息"树的结构,既不属于模型也不属于视图.
理想的情况是我想有一个DetailsController服务作为代理Details每DetailsView.我可以动态实例化控制器并在视图模板中设置其内容吗?我对新的Ember路由器的理解是在给定的路径中设置控制器和插座; 但是,这似乎不适用于此,因为根本没有进行路由.有关如何处理递归控制器/视图/路径欢迎的所有建议/见解.
我已经看过EmberJS嵌套视图和控制器了,但是我建议我有一个单独ArrayController的所有Details,甚至跨越Action...这也不会保留嵌套细节的树结构.
我还看了升级到Ember 0.9.6之后车把模板中的递归视图无效,但解决方案没有说明控制器的任何内容.
model-view-controller recursion nested ember.js ember-router
我正在切换到新的ember路由器,但有一个非常简单的问题 - 我如何找出我目前的路线?在您做某事之前App.router.get('currentState'),这似乎不再起作用,因为路由器不再继承StateManager
我有一个details: DS.attr('recursive_object')自定义转换(它是一个递归对象).
的detailsATTR可以就地进行编辑,而无需实际的对象参考变化(例如,在细节的子细节ATTR被编辑).但是,这不会触发父记录的isDirty标志.
如何手动通知DS.Model记录已更新?
型号定义:
App.MyRecord = DS.Model.extend
details: DS.attr "recursive object"
Run Code Online (Sandbox Code Playgroud)
编辑 details
# record is an instance of App.MyRecord
# makes a change to the record's details attr
record.makeChangeToDetails()
record.get('isDirty') # still false because Ember doesn't know that a sub-detail changed.
Run Code Online (Sandbox Code Playgroud)
我试过的事情:
record.makeChangeToDetails()通过will/didSetProperty电话包裹:
record.send 'willSetProperty', name: 'details'
record.makeChangeToDetails()
record.send 'didSetProperty', name: 'details'
Run Code Online (Sandbox Code Playgroud)
调用 notifyPropertyChange
record.notifyPropertyChange 'details'
Run Code Online (Sandbox Code Playgroud)
调用set并传递相同的对象
record.makeChangeToDetails()
record.set 'details', record.get('details')
Run Code Online (Sandbox Code Playgroud)
我也试过从这里发送各种其他DS.model状态事件:https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/model/states.js
包括didChangeData …
简短的问题:有没有办法向服务器发出jsonp请求,捕获请求,但不能将其解析为javascript?我在jQuery 1.5中使用dataType:"jsonp text"但它无法正常工作.
我正在尝试使用jsonp通过AJAX访问跨域URL.问题是另一个域(我大学的目录列表)很老,我怀疑服务器是否支持jsonp.
我想要的是:一种从jsonp请求以纯文本形式访问响应的方法.或者,如果我可以从失败的jsonp请求访问原始响应 - 这也可以.
提前致谢!
码:
ajax_url = 'https://somesite/?searchTerm='+query+'&searchType=lastname';
var jqxhr = $.ajax({type:"GET",
url: ajax_url,
dataType:"jsonp text",
callback: "whatever",
success:function(responseData) {
$('div#content').text( responseData.slice(0, 100) );
dbg(responseData.slice(0,100));
}})
.success(function() { alert("success"); })
.error(function(obj, errStr) { alert("error"); dbg("error: " + errStr + "test: " + test.responseText + this.responseTxt);})
.complete(function() { alert("complete"); });
Run Code Online (Sandbox Code Playgroud) 我有一个现有的DetailController,DetailView在我的应用程序中有一些非常复杂的UI /数据操作逻辑(热键,复制粘贴,复制,自动完成等) - 视图将UI事件发送到控制器; 控制器处理逻辑.
我想将其转换为Ember组件.
DetailComponent吗?这对我来说似乎很麻烦.{{render}},{{view}},{{partial}}分量模板内?我使用create-react-app创建一个应用程序,并在尝试构建生产优化版本时遇到错误yarn build:
> yarn build help
yarn run v1.9.4
$ react-scripts build help
Creating an optimized production build...
Failed to compile.
Expected a pseudo-class or pseudo-element.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不是一个非常有用的错误。谷歌搜索似乎找到了有关postcss的内容,但我不确定它与 create-react-app 有何关系,或者如何解决该问题。
以前有人遇到过类似的问题吗?
请注意,该应用程序在开发模式下编译良好:
Compiled successfully!
You can now view note-app in the browser.
Local: http://localhost:3000/
On Your Network: http://192.168.0.54:3000/
Note that the development build is not optimized.
To create a production build, …Run Code Online (Sandbox Code Playgroud) 我正在使用rspec-spies,并且想知道是否有一种方法可以在完成所有呼叫后检查间谍。
例如,如果我做类似的事情
# setup
Post.stub(:find).with(@post.id).and_return(@post)
do_something_to_call_post_find()
# verify find was called
Post.should have_received(:find).with(@post.id)
Run Code Online (Sandbox Code Playgroud)
这很好用,但如果 Post没有收到预期的参数,我会收到一条无用的错误消息(基本上是“Post 应该收到带有 123 的 find”)。相反,我想看看实际的调用是什么`find。
我可以在之后立即暂停do_something_to_call_post_find(),但是有没有办法列出对存根/间谍的所有调用/参数?
实际用例
今天这个用例让我着迷——我期望Post.should have_received(:find).with(@post.id),其中@post.id is an integer,我的控制器测试将参数(包括 id)作为字符串传递。如果我能够检查实际的调用,我就会看到123和之间的区别"123",而且它会很明显。
在rails中,update_attributes在模型上使用将创建基于的嵌套模型association_attributes.是否有一种惯用的方法来使其更新嵌套模型?
例如:
Message.rb:
attr_accessible :recipient_attributes
has_one :recipient
accepts_nested_attributes_for :recipient
Run Code Online (Sandbox Code Playgroud)
Recipient.rb
belongs_to :message
# has an name fied
# has an email field
Run Code Online (Sandbox Code Playgroud)
接受者
r = Recipient.create
r.create_recipient name: "John Smith", email: "john@gmail.com"
r.update_attributes recipient_attributes: {email: "johns_new_address@gmail.com"}
r.recipient.name # nil <-- this creates a NEW recipient, so the name is nil
r.recipient.email # johns_new_address@gmail.com
Run Code Online (Sandbox Code Playgroud)
相反,我希望r.recipient收到相同的收件人记录,但会收到一封新电子邮件.
ember.js ×4
ember-router ×2
activerecord ×1
bash ×1
coffeescript ×1
components ×1
cors ×1
cross-domain ×1
ember-data ×1
execjs ×1
idiomatic ×1
idioms ×1
jquery ×1
jsonp ×1
nested ×1
postcss ×1
recursion ×1
rspec ×1
rspec-rails ×1
rspec2 ×1
ruby ×1
slice ×1
string ×1
stub ×1
substring ×1
terminal ×1
zsh ×1
zshrc ×1