我正在使用Devise 3的候选版本,以便我可以将它与Rails 4一起使用.在Rails 3.2中我曾经能够User通过简单地将该字段添加到registration/edit.html.erb 来为我的模型添加自定义字段和registration/new.html.erb文件(运行正确的迁移后).然后我只是将该字段添加到attr_accessible模型中的字段列表中.
但是,在Rails 4中,没有attr_accessible列表,我不能简单地在视图中添加字段.如何添加自定义用户字段?
ruby-on-rails attr-accessible devise strong-parameters ruby-on-rails-4
我编写了JavaScript库来使用FileSaver.js及其相关的库.但是,每当有人想要使用我的库时,我都不想总是加载FileSaver.js.而且我不想强迫他们自己加载所有各种与FileSaver相关的JavaScript库script(或者甚至加载我的一个可以做到这一点).
相反,我更喜欢的是这样的.当他们调用我的createImage函数时,它首先执行以下操作:
function createImage(image, name) {
if (typeof(saveAs) !== 'function') {
var element = document.createElement('script');
element.async = false;
element.src = 'FileSaver.js';
element.type = 'text/javascript';
(document.getElementsByTagName('head')[0]||document.body).appendChild(element);
}
// now do the saveImage code
}
Run Code Online (Sandbox Code Playgroud)
问题是,经过上述操作后,saveAs仍未定义该功能.只有在我createImage完成后才能saveAs最终定义函数.
我想在Rails 4.1项目的特定页面上放置一些使用jQuery的简单JavaScript代码:
$( "#my_div" ).on( "click", function() {
alert( $( this ).text() );
});
Run Code Online (Sandbox Code Playgroud)
但是,使用Rails 4.1,默认情况下jQuery包含在html的最后.我知道我可以将其移动到标题中,或者我可以将上面的函数设置为window.onload或document.onload.但我猜测Rails将jQuery移到最后有一个很好的理由,所以我很好奇这里要做的是什么?
javascript jquery ruby-on-rails ruby-on-rails-4 ruby-on-rails-4.1
是否可以在Cloud9上安装JDK 8?Java 7已经安装:
samueller@test:~/workspace $ javac -version
javac 1.7.0_55
samueller@test:~/workspace $ java -version
java version "1.7.0_55"
OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)
Run Code Online (Sandbox Code Playgroud) 我们使用带有aws-sdk gem的Paperclip在我们的Rails应用程序中存储和显示图像:
class User < ActiveRecord::Base
has_attached_file :image,
storage: :s3,
s3_credentials: 'config/s3.yml',
s3_protocol: :https,
styles: {
curriculum: '120x120>',
medium: '600x600>',
thumb: '200x200>'
},
default_url: 'missing_photo.png'
end
Run Code Online (Sandbox Code Playgroud)
如果我然后<%= image_tag current_user.image.url %>在html.erb文件中使用,我会得到以下HTML : <img src="https://s3.amazonaws.com/<my_bucket>/users/images/000/000/001/medium/my_image.png?1419989041">.
如何https://s3.amazonaws.com/<my_bucket>将其作为自定义URL https://example.com?我在Cloudfront中设置了所有域以及SSL证书.
我查看了Paperclip S3 Storage文档.有一个:url选项,但我为该选项写的任何内容似乎都没有用.
ruby-on-rails paperclip ruby-on-rails-4 ruby-on-rails-4.2 aws-sdk
根据路线上的Compojure文档,我可以轻松获得如下的单个参数:
(POST "/my-app" [param1 param2]
(str "<h1>Hello " param1 " and " param2 "</h1>"))
Run Code Online (Sandbox Code Playgroud)
如何获取所有参数,而不仅仅是单个参数?
我有一个简单的函数(在React组件中):
getInitialState: function() {
return {
text: this.props.text
}
}
Run Code Online (Sandbox Code Playgroud)
但我想用箭来形容它:
getInitialState: () => {
text: this.props.text
}
Run Code Online (Sandbox Code Playgroud)
除非出现错误,因为{粗箭头后的a表示返回未定义的代码块(除非您明确地进行return了操作)。至少那是我最初的想法。但是我认为this现在已经绑定到那个胖箭头功能this.props上了undefined。
所以我尝试这样:
getInitialState: () => new Object({
text: this.props.text
})
Run Code Online (Sandbox Code Playgroud)
但是我得到同样的错误,this.props是不确定的。
所以我想我有两个很好奇的问题。首先,从简单的语句胖箭头函数返回对象的惯用方式是什么?其次,如何返回引用this周围环境的对象的对象?
有没有比map遍历每个元素更有效的方法来更新Elm列表中的元素?
{ model | items = List.indexedMap (\i x -> if i == 2 then "z" else x) model.items }
Run Code Online (Sandbox Code Playgroud)
也许榆木的编译器是复杂的,足以优化这个让map或indexedMap不被不必要地复制过的每一个元素,除了1.什么嵌套列表?
Clojure必须assoc-in更新嵌套列表或记录中的元素(也可以合并)。榆树有同等学历吗?
我有一个<div>滚动。通过 JavaScript,我将元素添加到<div>with element.scrollTop = element.scrollHeight。效果很好,除非每次将元素添加到<div>. 有没有办法自动滚动(不使用setInterval并反复滚动)并将<div>的滚动条保持在底部?
我的<div>:
<div class="messages" style="height: 7em; overflow: scroll">
<div>Anonymous: Hello</div>
<div>John: Hi</div>
</div>
Run Code Online (Sandbox Code Playgroud)
是否有<div>内容更改时的事件?
更新:添加后,我无法轻松访问 JavaScript 代码<div>。这就是为什么我想添加一个事件侦听器或其他一些机制来保持滚动条固定在底部。
我想用%20替换字符串中的句点以用于Firebase密钥.我可以一次做1个时间段:
string.replace('.', '%20')
Run Code Online (Sandbox Code Playgroud)
我甚至可以用/g正则表达式标志来做所有这些:
string.replace(/\./g, '%20')
Run Code Online (Sandbox Code Playgroud)
但Firebase规则给了我一个错误:
保存规则时出错 - 第5行:正则表达式不支持i以外的标志
所以我需要一个表达式来替换所有句点而不使用/g.我可以链接.replace('.', '%20')很多次:
string.replace('.', '%20').replace('.', '%20').replace('.', '%20').replace('.', '%20')
Run Code Online (Sandbox Code Playgroud)
但我希望有更好的方法.
更新:我曾尝试过string.split('.').join('%20'),但Firebase会抛出错误:
类型错误:对非目标的目标进行函数调用.
我猜他们split在他们的JSON规则解析器中取出了该函数.
更新2:我也试过了(function() {var s = auth.token.email; while (s.indexOf('.') != -1) { s = s.replace('.', '%20') } return s})().Firebase抱怨他们的数据库规则中不允许使用函数定义.
更新3:感谢Firebase的精彩支持,我发现string.replace他们的数据库规则中的函数已被替换为替换所有子串的版本,而不仅仅是一次出现.所以实际上string.replace('.', %2E')完美无缺!
javascript regex replace firebase firebase-realtime-database
javascript ×5
aws-sdk ×1
clojure ×1
cloud9-ide ×1
compojure ×1
css ×1
devise ×1
dom-events ×1
ecmascript-6 ×1
elm ×1
firebase ×1
html ×1
java ×1
jquery ×1
list ×1
paperclip ×1
regex ×1
replace ×1
ring ×1
this ×1