小编Ben*_*Lee的帖子

在DOM中嵌入任意JSON的最佳实践?

我正在考虑在DOM中嵌入任意JSON,如下所示:

<script type="application/json" id="stuff">
    {
        "unicorns": "awesome",
        "abc": [1, 2, 3]
    }
</script>
Run Code Online (Sandbox Code Playgroud)

这类似于可以在DOM中存储任意HTML模板以供以后与JavaScript模板引擎一起使用的方式.在这种情况下,我们以后可以检索JSON并使用以下方法解析它:

var stuff = JSON.parse(document.getElementById('stuff').innerHTML);
Run Code Online (Sandbox Code Playgroud)

这有效,但这是最好的方法吗?这是否违反任何最佳做法或标准?

注意:我不是在寻找在DOM中存储JSON的替代方法,我已经确定这是我遇到的特定问题的最佳解决方案.我只是在寻找最好的方法.

javascript json dom embedding decoupling

104
推荐指数
6
解决办法
4万
查看次数

删除<h1>标记后的换行符?

我在删除<h1>标记之后的换行符时遇到问题,因为每次打印时,它都会在它之后直接添加换行符,所以像这样<h1>Hello World!</h1> <h2>Hello Again World!</h2>打印出来:

Hello World!

Hello Again World!
Run Code Online (Sandbox Code Playgroud)

我不确定我需要在CSS中更改哪些标签,但我希望它与填充或边距有关

如果可能的话,我也想保持垂直填充.

html css styles header stylesheet

85
推荐指数
2
解决办法
13万
查看次数

尝试登录时出现"BCrypt :: Errors :: InvalidHash"

我正在努力完成一个项目.我正在使用用户模型.当我注册一切似乎没问题.但是当我尝试签署同一个成员时,我收到了这个错误.

我们很抱歉,但有些不对劲. heroku日志文件显示错误为:

BCrypt::Errors::InvalidHash (invalid hash):
  app/controllers/sessions_controller.rb:8:in `create'
Run Code Online (Sandbox Code Playgroud)

my *sessions_controller*是:

class SessionsController < ApplicationController

  def new
  end

   def create
    user = User.find_by_email(params[:session][:email])
    if user && user.authenticate(params[:session][:password])
      sign_in user
      redirect_to user
    else
      flash.now[:error] = 'Invalid email/password combination'
      render 'new'
    end
  end


  def destroy
    sign_out
    redirect_to root_path
  end
end
Run Code Online (Sandbox Code Playgroud)

用户模型是:

class User < ActiveRecord::Base
  attr_accessible :email, :name, :nickname,:password, :password_confirmation 
  has_secure_password


  before_save { |user| user.email = email.downcase }
  before_save { |user| user.nickname = nickname.downcase }
  before_save :create_remember_token
....validations......

    private …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku bcrypt

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

MYSQL日期时间到最近一小时

我在MySQL数据库中有一个日期时间字段,希望将结果输出到最近的小时.

例如2012-04-01 00:00:01应该读2012-04-01 00:00:00

mysql datetime

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

使用window.history.pushState和fallback跨浏览器jquery ajax历史记录

我想以跨浏览器的方式使用jQuery和AJAX实现导航历史记录.我的方法是使用window.history.pushState并回退到/#!/url不支持的浏览器中的哈希URL window.history.pushState.

例如:

<a href="/home">home</a>
<a href="/about">about</a>
<a href="/contact">contact</a>
Run Code Online (Sandbox Code Playgroud)

在支持的浏览器window.history.pushState,点击这些链接之一,应该没有刷新页面更改地址http://domain.com/home,http://domain.com/about等.当浏览器不支持window.history.pushState,就应该使用片段标识符,即:http://domain.com/#!/ home,http://domain.com/#!/about.


更新:根据这里的反馈,我实现了Ajax SEO(git),它使用 旧的浏览器回退的HTML5历史API的jQuery地址/#!/url.

ajax jquery browser-history

31
推荐指数
2
解决办法
3万
查看次数

试图构建一个gem,得到一个Gem :: InvalidSpecificationException:"[...]不是文件"

我正在尝试构建一个我写过的自定义gem,client_package但它失败了.

我的目录结构如下所示:

client_package
    Gemfile
    Gemfile.lock
    client_package.gemspec
    Rakefile
    Readme.md
    .gitignore
    .git
        ...git files...
    lib
        client_package.rb
        client_package
            version.rb
            api.rb
            ...more...
Run Code Online (Sandbox Code Playgroud)

client_package.gemspec看起来像这样:

# encoding: UTF-8
require File.expand_path('../lib/client_package/version', __FILE__)

Gem::Specification.new do |s|
    s.name = 'client_package'
    s.version = ClientPackage::VERSION
    s.platform = Gem::Platform::RUBY

    s.files = `git ls-files`.split('\n')
    s.executables = `git ls-files -- bin/*`.split('\n').map{ |f| File.basename(f) }
    s.require_paths = ['lib']

    # also have s.authors, s.email, s.homepage, s.summary, s.description

    s.add_dependency 'httparty'
    s.add_dependency 'json'
end
Run Code Online (Sandbox Code Playgroud)

并且我的所有文件都已提交,并且git状态是干净的.

从顶层client_package目录中,我运行gem build client_package.gemspec并得到此错误:

ERROR:  While …
Run Code Online (Sandbox Code Playgroud)

ruby gem rubygems gemspecs

21
推荐指数
2
解决办法
9490
查看次数

是否有适用于Linux的MongoDB GUI桌面应用程序?

从我的在线搜索中,我发现了几十个基于Web的MongoDB GUI,以及一个用于MacOS的本机桌面应用程序和一个用于Windows的应用程序.但是我找不到Linux的桌面GUI.我正在寻找类似于mysql-query-browser的东西,但是对于MongoDB.谁知道什么?

(如果重要,我正在使用Kubuntu 11.04)

linux ubuntu user-interface mongodb ubuntu-11.04

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

为什么上边div的margin-top适用于`<body>`?

在这里,我发布了一个演示http://jsfiddle.net/LxYMv/1/.

正如你所看到的那样<body>获得margin-top:距离顶部div 10px,因此<html>黑色背景泄露出来.这是否意味着我不能给顶级div一个积极的优势?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <style>
            html{color:#000;background:#FFF}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,select,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,button,caption,cite,code,dfn,em,input,optgroup,option,select,strong,textarea,th,var{font:inherit}del,ins{text-decoration:none}li{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:baseline}sub{vertical-align:baseline}legend{color:#000}
            html{background:black}
            body{background:white}
        </style>
    </head>
    <body>
        <div style="margin-top:10px;background:red;height:100px">Here the top div begins</div>
        <div style="height:800px">A long long div</div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

html css

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

在jQuery中,为什么以编程方式触发复选框上的"click()"而不是立即检查它?

更新:这仅适用于jQuery 1.8及更低版本.这是在jQuery 1.9修复的.

这是我的最小jsfiddle示例:http://jsfiddle.net/8fuEJ/.我正在使用谷歌浏览器,如果这有所作为.

我有一个复选框:

<input type="checkbox" id="wtf">
Run Code Online (Sandbox Code Playgroud)

我有一个jquery事件处理程序:

$('#wtf').click(function(ev) { alert(this.checked); });
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.当我单击复选框时,我首先看到复选标记出现,然后是警告"true"(按此顺序).当我再次点击它时,我看到复选标记消失,然后警告"false".

当我以编程方式触发click事件时出现问题.像这样:

$('#wtf').click(function(ev) { alert(this.checked); });
$('#wtf').click();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,首先我看到警告"false"(复选标记仍然不可见),然后在解除警报后,出现复选标记.

为什么这里的顺序不同?

另请注意,如果我使用事件处理程序change,它会按预期工作.

$('#wtf').change(function(ev) { alert(this.checked); });
$('#wtf').click();
Run Code Online (Sandbox Code Playgroud)

在这里,我看到复选标记出现,然后警告"true".

checkbox jquery onclick

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

是否可以从git存储库直接安装gem?

使用bundler,您可以在以下位置执行以下操作Gemfile:

gem 'my_gem', :git => 'git@github:me/my_gem.git'
Run Code Online (Sandbox Code Playgroud)

这将在该repo中构建gem并安装它.效果很好.是否可以使用命令行gem工具执行类似的操作?像这样的东西?

gem install my_gem --git="git@github:me/my_gem.git"
Run Code Online (Sandbox Code Playgroud)

显然这个命令不起作用,但它有类似的东西吗?我知道我可以克隆回购,运行a gem build my_gem.gemspec然后a gem install my_gem-1.2.3.gem.但我想知道是否有一个直接的单行程隐藏在幕后的这些中间步骤.

ruby git gem rubygems

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