小编She*_* Yu的帖子

从索引到字符串结尾的子字符串的Ruby习惯用法

只是想知道是否有一个Ruby习惯用法从索引中提取子字符串直到字符串结尾.我知道str[index..-1]它在一个范围内的对象传递给工作String[]方法,但它是一个有点笨拙.例如,在python中,您可以编写str[index:]哪些内容可以隐式地获取字符串的其余部分.

例:

s = "hello world"
s[6..-1] # <-- "world"
Run Code Online (Sandbox Code Playgroud)

还有什么比这更好的s[6..-1]吗?

ruby string substring idiomatic slice

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

ExecJS咖啡脚本没有显示编译错误的行号(Rails资产管道)

在我的一个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似乎并不重要 - 在第一个应用程序中,从来没有给出行号,而在第二个应用程序中,总是有.

ruby-on-rails coffeescript execjs asset-pipeline

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

zsh更改提示输入颜色

我想更改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中(最后将颜色设置为黄色)但它不起作用.(我也不知道如何在命令后将颜色设置回白色).

bash terminal zsh zshrc

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

Ember.js递归控制器和视图

假设我有一个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服务作为代理DetailsDetailsView.我可以动态实例化控制器并在视图模板中设置其内容吗?我对新的Ember路由器的理解是在给定的路径中设置控制器和插座; 但是,这似乎不适用于此,因为根本没有进行路由.有关如何处理递归控制器/视图/路径欢迎的所有建议/见解.

我已经看过EmberJS嵌套视图和控制器了,但是我建议我有一个单独ArrayController的所有Details,甚至跨越Action...这也不会保留嵌套细节的树结构.

我还看了升级到Ember 0.9.6之后车把模板中的递归视图无效,但解决方案没有说明控制器的任何内容.

model-view-controller recursion nested ember.js ember-router

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

Ember.js获得当前路线

我正在切换到新的ember路由器,但有一个非常简单的问题 - 我如何找出我目前的路线?在您做某事之前App.router.get('currentState'),这似乎不再起作用,因为路由器不再继承StateManager

ember.js ember-router

6
推荐指数
2
解决办法
6402
查看次数

Ember Data:如何为记录设置isDirty?

我有一个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 …

ember.js ember-data

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

以jsonp发送请求,使用jQuery 1.5将响应解释为文本

简短的问题:有没有办法向服务器发出jsonp请求,捕获请求,但不能将其解析为javascript?我在jQuery 1.5中使用dataType:"jsonp text"但它无法正常工作.

我正在尝试使用jsonp通过AJAX访问跨域URL.问题是另一个域(我大学的目录列表)很老,我怀疑服务器是否支持jsonp.

  • 在Firefox中,我收到"XML标记名称不匹配(预期的META)"错误.在chrome中,我得到一个"Uncaught SyntaxError Unexpected token <",它们都指向与我的AJAX请求相对应的文件.错误回调中的错误字符串是"parsererror".
  • 我无法进行正常的AJAX调用 - 当我将数据类型更改为"text"或将其全部删除时,另一个域会抱怨用户未经过身份验证并重定向到登录页面 - 即使我已经登录浏览器端.当dataType是jsonp时,不会发生这种情况.
  • 我知道服务器需要支持JSONP,我认为它不支持,但是当我将dataType更改为JSONP时,我可以看到响应页面资源显示在Chrome和Firefox中 - 所以服务器实际上将响应发送到浏览器(静态HTML网页+一些java脚本) - 包含我想要获取的数据.
  • 问题是jQuery试图将响应解析为javascript,并且失败(因为它不是javascript).所以数据最终会在浏览器中出现 - 我只需要访问它!
  • 使用dataType:"jsonp text"应该指示发送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)

jquery jsonp cross-domain cors

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

Ember.js将控制器/视图架构转换为组件

我有一个现有的DetailController,DetailView在我的应用程序中有一些非常复杂的UI /数据操作逻辑(热键,复制粘贴,复制,自动完成等) - 视图将UI事件发送到控制器; 控制器处理逻辑.

我想将其转换为Ember组件.

  1. 这基本上是指我将视图和控制器合并到一起DetailComponent吗?这对我来说似乎很麻烦.
  2. 如果没有,我如何在组件内部使用控制器和视图?也就是说,我仍然希望组件的完全隔离和定义良好的公共接口,但在组件内部,我想使用控制器和视图进行组织.那可能吗?
  3. 是否有可能使用{{render}},{{view}},{{partial}}分量模板内?

components web-component ember.js

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

create-react-app 构建错误“需要伪类或伪元素。”

我使用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)

postcss create-react-app

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

rspec-spies 检查存根方法和方法间谍的调用参数

我正在使用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",而且它会很明显。

rspec stub rspec2 rspec-rails

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

Rails ActiveRecord更新嵌套属性

在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收到相同的收件人记录,但会收到一封新电子邮件.

activerecord idioms ruby-on-rails nested-attributes

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