小编eno*_*com的帖子

为什么在Ruby中将0视为真?

我正在阅读优秀的Ruby on Rails教程并遇到以下代码.

if 0
  true
else
  false
end
Run Code Online (Sandbox Code Playgroud)

上述返回true和示出了如何与许多语言(C是明显的例子),红宝石治疗0true.我并没有将这种行为视为特殊情绪,而是认为这有很大理由偏离惯例.Python中,例如,治疗0False,正如人们所期望的.

简而言之,设计红宝石的理由0true什么?

ruby programming-languages

32
推荐指数
3
解决办法
8167
查看次数

Rails 3 Form Helpers:UTF8和其他隐藏字段

风景:

<%= form_for :blog_post do |f| %>
  <ul>
    <li>
      <%=  f.label :title %>
      <%= f.text_field :title, :type => 'text', :id => 'title', :size => '', :limit => '255' %>
    </li>

  </ul>
<% end %>

<!DOCTYPE html> 
    <html> 
    <head> 
      <title>LevihackwithCom</title> 
      <script src="/javascripts/prototype.js?1285902540" type="text/javascript"></script> 
      <script src="/javascripts/effects.js?1285902540" type="text/javascript"></script> 
      <script src="/javascripts/dragdrop.js?1285902540" type="text/javascript"></script> 
      <script src="/javascripts/controls.js?1285902540" type="text/javascript"></script> 
      <script src="/javascripts/rails.js?1285902540" type="text/javascript"></script> 
      <script src="/javascripts/application.js?1285902540" type="text/javascript"></script> 
      <meta name="csrf-param" content="authenticity_token"/> 
      <meta name="csrf-token" content="UnhGSHHanJHfgJYhnksqJ1bfq3W+QEU2GJqLAMs2DmI="/> 
    </head>

    <body> 

    <form accept-charset="UTF-8" action="/blog_post/new" method="post">
      <div style="margin:0;padding:0;display:inline">
        <input name="utf8" type="hidden" value="&#x2713;" />
        <input name="authenticity_token" type="hidden" value="UnhGSHHanJHfgJYhnksqJ1bfq3W+QEU2GJqLAMs2DmI=" …
Run Code Online (Sandbox Code Playgroud)

forms views ruby-on-rails

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

为什么在Ruby中未初始化的实例变量返回nil,但未初始化的类变量会引发错误?

在Ruby中,为什么未初始化的实例变量返回nil而未初始化的类变量引发NameError

相比:

@some_uninitialized_variable # => nil
Run Code Online (Sandbox Code Playgroud)

和:

@@some_uninitialized_class_variable # => NameError
Run Code Online (Sandbox Code Playgroud)

ruby

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

如何在golang中构建自己的简单路由器?

我在golang中构建自己的路由器以理解逻辑,但是我得到404错误,通常没有找到,我能够运行到服务器但是我用hello名称写了函数,它没有运行.这可能是什么原因?

package main
import (
    "fmt"
    "log"
    "net/http"
    "strings"
    "time"
)

var Session *http.Server
var r Router

func Run(port string) {
    Session = &http.Server{
        Addr:           port,
        Handler:        &r,
        ReadTimeout:    10 * time.Second,
        WriteTimeout:   10 * time.Second,
        MaxHeaderBytes: 1 << 20,
    }
    log.Fatal(Session.ListenAndServe())
}

type Handle func(http.ResponseWriter, *http.Request)

type Router struct {
    mux map[string]Handle
}

func newRouter() *Router {
    return &Router{
        mux: make(map[string]Handle),
    }
}

func (r *Router) Add(path string, handle Handle) {
    r.mux[path] = handle
}

func GetHeader(url …
Run Code Online (Sandbox Code Playgroud)

router go httpserver

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

如何测试成功更改密码?

我使用bcrypt-ruby和组合了一个用户身份验证的基本应用程序has_secure_password.结果基本上是Rails教程中应用程序的准系统版本.换句话说,我有一个RESTful用户模型以及登录和注销功能.

作为编辑用户信息的测试的一部分,我编写了一个更改密码的测试.虽然更改密码在浏览器中工作正常,但我的测试不会通过.

subject { page }

describe "successful password change"
  let(:new_password) { "foobaz" }
  before do
    fill_in "Password",               with: new_password
    fill_in "Password Confirmation",  with: new_password
    click_button "Save changes"
  end

  specify { user.reload.password.should == new_password }
end
Run Code Online (Sandbox Code Playgroud)

显然,我在这里误解了一些基本细节.

简而言之:

1)为什么上面的代码无法正常工作?更改密码功能在浏览器中有效.同时,rspec继续在上面的最后一行重新加载旧密码.然后测试失败了.

2)测试密码更改的更好方法是什么?

编辑:

将初始密码设置为foobar,错误消息为:

Failure/Error: specify { user.reload.password.should == new_password }
   expected: "foobaz"
        got: "foobar" (using ==)
Run Code Online (Sandbox Code Playgroud)

基本上,看起来before块实际上并没有保存新密码.

作为参考,相关的控制器动作如下:

def update
  @user = User.find(params[:id])
  if @user.update_attributes(params[:user])
    flash[:success] = "Profile Updated" …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails rspec-rails ruby-on-rails-3 railstutorial.org

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