点了立即购买居然跳回这个帖子。。。。。
应该是 where(_id: id) 吧?
match '/:controller/export'
save!没报异常?likeable 是 store 存的吗?
用 save!试试
没搞过 cancan 很久了,印象中它是默认你是试用 restful 的 route,所以它会自己去拿 params[:id] 去找的好像。下面是 cancan 的源代码,你去掉 cancan 试试看?
def find_resource
if @options[:singleton] && parent_resource.respond_to?(name)
parent_resource.send(name)
else
if @options[:find_by]
if resource_base.respond_to? "find_by_#{@options[:find_by]}!"
resource_base.send("find_by_#{@options[:find_by]}!", id_param)
else
resource_base.send(@options[:find_by], id_param)
end
else
adapter.find(resource_base, id_param)
end
end
end
#19 楼 @zw963 enumerator 没有 uniq!方法
另外 #3 楼 @ashchan 试了一下你的方法,速度真的不错 我自己也用 sort 方法试了一下,不过有时快有时慢,速度不是很稳定,有谁知道原因吗?
require 'benchmark'
module DuplicationChecker
def uniq?
set = Hash.new
each do |e|
return false if set[e]
set[e] = e
end
set.size < size
end
end
Array.class_eval do
include DuplicationChecker
end
arr = 100000.times.inject([]) do |arr, i|
arr << rand(100000000000000000)
end
arr << arr[-1]
Benchmark.bm do |x|
x.report('uniq') do
puts arr.size > arr.uniq.size
end
x.report('sort') do
arr.sort do |a, b|
eql = (a <=> b)
if eql == 0
puts a
break
end
eql
end
end
x.report('uniq?') do
puts arr.uniq?
end
x.report('dup') do
puts arr.size > arr.dup.uniq!.size
end
end
68-a8-6d-43-46-cc:ruby can$ ruby benchmark.rb
user system total real
uniqtrue
0.080000 0.000000 0.080000 ( 0.080204)
sort88757701264796045
0.040000 0.000000 0.040000 ( 0.044535)
uniq?false
0.090000 0.000000 0.090000 ( 0.092339)
duptrue
0.100000 0.010000 0.110000 ( 0.103186)
lib/cancan/controller_resource.rb:114:in `find_resource' 可能是 cancan。
Application Trace 报的是什么信息?
1.9.3-p286 :004 > a = {'a' => 1, 'b' => 2 }
=> {"a"=>1, "b"=>2}
1.9.3-p286 :005 > b = {'a' => 1, 'b' => 2 }
=> {"a"=>1, "b"=>2}
1.9.3-p286 :006 > a == b
=> true
/topics/node1?不是/topics/node/1 吧,看一下你的 route 是否正确,可能需要调整一下顺序。
进入 paste mode
自己写的单独的 demo 可以成功吗?我看它 demo 上的 jquery 是 1.2.3 的。。。。
试一下不使用 coffee,另外 coffee 的 hash 写法可以更简便一些,你可以看一下。 如果还有问题,可能是加载顺序,检查一下页面上 js 的加载顺序。
$("#slider") 找的到元素吗?
def pyramid(n)
prefix = []
1.upto(n) do |i|
puts [prefix, i, prefix.reverse].flatten.join.center( 2 * n - 1)
prefix.push(i)
end
end
def pyramid(n)
prefix = ''
1.upto(n) do |i|
puts (prefix + i.to_s + prefix.reverse).center(2 * n - 1)
prefix[i-1] = i.to_s
end
end
应该算是另一种思路的吧
def pyramid(n)
1.upto(n) do |i|
puts ((1..i).to_a + (1...i).to_a.reverse).join.center(n * 2 - 1)
end
end
:) 你们第一个见到的人就是我 哈哈
是啊,前些天你有过来 ruby party?你是大三的?
这个需要在 git config 里面设置一个属性,google 一下 git 中文
class Hash
alias :with :[]
def [](key)
value = with key
if value.nil?
with(keys.find { |k| k.respond_to?(:include?) && k.include?(key) })
end
end
end
hash = {(1..5) => "One To Five", (6..10) => "Six To Ten"}
puts hash[3.222]
puts hash[9.99]
重新试了一下,应该可以
class Hash
def with(key)
value = self[key]
self[keys.find { |k| k.respond_to?(:include?) && k.include?(key) }] if value.nil?
end
end
hash = {(1..5) => "One To Five", (6..10) => "Six To Ten"}
puts hash.with(4.1123)
我重写不了 Hash 的 [ ] 方法,不知道你们是不是可以重写?
不是,应该是哪里写错了,全局搜索 specifications 这个词看看
你的程序哪里调用到 Specifications 这个类了,找找看是不是写错了
if 后面的条件最好不是赋值语句,会有
warning: found = in conditional, should be ==
看到 42 我就想起生命、宇宙以及任何事情的终极答案