我最近在使路径正常工作时遇到了一些问题.解决方案结果很简单,但我遇到了一个意想不到的问题,阻止了我进入它.包含在erb模板中的以下行完美运行:
<%= button_to "Confirm delivery", delivery_confirm_path( @delivery ) %>
Run Code Online (Sandbox Code Playgroud)
这个没有:
<%= button_to "Confirm delivery", delivery_confirm_path ( @delivery ) %>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,似乎不允许在左括号之前的间距.我得到的错误是这样的:
/app/views/deliveries/_delivery_buttons.html.erb:22: syntax error,
unexpected tLPAREN_ARG, expecting keyword_do or '{' or '('
...ivery", delivery_confirm_path ( @delivery ) );@output_buffer...
... ^
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么会导致错误吗?
编辑:对于信息,这是在Windows 7 64位上的Ruby 1.9.2和Rails 3.0.9
在Rails 3.0.10中
ruby-1.9.2-p180 :010 > Time::DAYS_INTO_WEEK
=> {:monday=>0, :tuesday=>1, :wednesday=>2, :thursday=>3, :friday=>4, :saturday=>5, :sunday=>6}
Run Code Online (Sandbox Code Playgroud)
和
ruby-1.9.2-p180 :011 > Date.today
=> Mon, 10 Oct 2011
ruby-1.9.2-p180 :012 > Date.today.wday
=> 1
Run Code Online (Sandbox Code Playgroud)
因此,星期一在时间映射中为0,在日期映射中为1.
https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/time/calculations.rb
我觉得从星期日开始,零是更安全,更常见,更有可能被别人的方式去理解.我希望了解历史/推理,以防我忽视某些事情.
我的用例:我在我的数据库中明确地存储了星期几.我认为存储为整数比存储"星期一","星期二"等更有效,更容易使用.
PS我有一个好主意做类似以下的事情.从平日字符串里面来回映射方法(隐藏整数).
ruby-1.9.2-p180 :010 > Time::DAYS_INTO_WEEK
=> {:monday=>0, :tuesday=>1, :wednesday=>2, :thursday=>3, :friday=>4, :saturday=>5, :sunday=>6}
Time::DAYS_INTO_WEEK[day_of_week.downcase.to_sym]
Time::DAYS_INTO_WEEK.to_a.select{|k, v| v == start_day }.first.first.to_s.capitalize
Run Code Online (Sandbox Code Playgroud) 下面是我用来设置服务器的代码:
require 'socket'
require 'openssl'
socket = TCPServer.new('127.0.0.1', 4433)
ssl_context = OpenSSL::SSL::SSLContext.new()
ssl_context.cert = OpenSSL::X509::Certificate.new(File.open("ssl/server/server.crt"))
ssl_context.key = OpenSSL::PKey::RSA.new(File.open("ssl/server/server.key"))
ca_cert = OpenSSL::X509::Certificate.new(File.open("ssl/ca/ca.crt"))
ssl_socket = OpenSSL::SSL::SSLServer.new(socket, ssl_context)
Thread.start(ssl_socket.accept) do |s|
puts "Connected to #{s.peeraddr.last}"
if s.peer_cert.verify(ca_cert.public_key)
puts "Certificate verified"
else
puts "Certificate invalid"
end
end
Run Code Online (Sandbox Code Playgroud)
和客户:
require 'socket'
require 'openssl'
socket = TCPSocket.new('127.0.0.1', 4433)
ssl_context = OpenSSL::SSL::SSLContext.new
ssl_context.cert = OpenSSL::X509::Certificate.new(File.open("ssl/client1/client1.crt"))
ssl_context.key = OpenSSL::PKey::RSA.new(File.open("ssl/client1/client1.key"))
ssl_socket = OpenSSL::SSL::SSLSocket.new(socket, ssl_context)
ca_cert = OpenSSL::X509::Certificate.new(File.open("ssl/ca/ca.crt"))
ssl_socket.connect
if ssl_socket.peer_cert.verify(ca_cert.public_key)
puts "Certificate checks out"
else
puts "Certificate not verified" …Run Code Online (Sandbox Code Playgroud) 假设我有一个用户集合.有没有办法使用mongoid在集合中找到n个随机用户,它不会返回同一个用户两次?现在让我们假设用户集合如下所示:
class User
include Mongoid::Document
field :name
end
Run Code Online (Sandbox Code Playgroud)
简单吧?
谢谢
我有一组对象@users,每个对象都有自己的id属性.
@users = [#<User id:1>, #<User id:2>]
Run Code Online (Sandbox Code Playgroud)
我也有一个有序的数组ids.
ids = [2,1]
Run Code Online (Sandbox Code Playgroud)
¿有没有一种神奇的方法来使用ID列表对集合进行排序?如果可能的话,不要再次调用数据库.
谢谢 !!!
我在Mac上使用黄瓜/水豚/硒/火狐.所有工作都很好,除了d&d.拖放可通过drag_node.drag_to(drop_node).调用时,它不会引发任何错误,但实际的拖放从未发生过.
现在,我发现这个示例应用程序(由显然有类似问题的人编写)证明了这个问题,而不是复制粘贴的碎片.
然而谷歌却没有意识到drag_to()被打破了.据我所见.这给了我一个希望,就是我错过了一些东西而不是一个bug.那是什么?我错过了什么?一个bug?
如果这是一个noob问题,请原谅我:
我有一个应用程序,用户可以在他们的个人资料中设置自己的时区.
当有人添加阵容(特定于应用程序的术语)时,我会执行以下操作:
time = ActiveSupport::TimeZone.new(user.timezone).parse(
"Wednesday, 26 October, 2011 13:30:00"
)
# This outputs: 2011-10-26 13:30:00 +0200 - valid according to the user selected TZ
Run Code Online (Sandbox Code Playgroud)
然后我保存了阵容:
Lineup.create({
:date => time.gmtime,
:uid => user._id,
:pid => product._id
})
Run Code Online (Sandbox Code Playgroud)
这应该(理论上)将日期保存为gmtime,但在查看记录时我会得到以下信息:
{
"_id": ObjectId("4e9c6613e673454f93000002"),
"date": "Wed, 26 Oct 2011 13: 30: 00 +0200",
"uid": "4e9b81f6e673454c8a000001",
"pid": "4e9c6613e673454f93000001",
"created_at": "Mon, 17 Oct 2011 19: 29: 55 +0200"
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,日期字段错误 - 它仍然保持用户时区,它应该是GMT,而不是特定于时区.
如果我输出time.gmtime,我会得到正确的时间(应该保存):
2011-10-26 11:30:00 UTC (correct)
Run Code Online (Sandbox Code Playgroud)
有任何想法如何保存GMT日期,以便它实际保存GMT日期?
我在尝试安装假日gem时收到以下错误:
# gem install holidays
Fetching: holidays-1.0.4.gem (100%)
ERROR: Error installing holidays:
holidays requires holidays (>= 0)
Run Code Online (Sandbox Code Playgroud)
我不是一个红宝石家伙,只是为Redmine Backlogs插件安装了一些deps .
版本和环境:
# gem -v
1.8.10
# ruby -v
ruby 1.8.7 (2010-06-23 patchlevel 299) [i386-linux]
CentOS Linux release 6.0 (Final)
# uname -r
2.6.32-71.29.1.el6.i686
Run Code Online (Sandbox Code Playgroud) 我在我的应用程序控制器中,我有一个url字符串.如何告诉应用程序在新窗口中打开浏览器中的URL.有没有办法将目标设置为空白?
例如
def link
@url = 'www.google.com'
****??? Open @url ?? *** with target blank?
end
Run Code Online (Sandbox Code Playgroud) 我有一些使用Nokogiri的代码,我试图得到inner_html没有得到评论.
html = Nokogiri::HTML(open(@sql_scripts_url[1])) #using first value of the array
html.css('td[class="ms-formbody"]').each do |node|
puts node.inner_html # prints comments
end
Run Code Online (Sandbox Code Playgroud)