0
使用Rails 3.2。下面是我的控制器:在Rails控制器中使用define_method会产生语法错误
class ShopsController < ApplicationController
...
class << self
Shop::SHOP_TYPES.each do |shop_type|
define_method "nearby_#{shop_type.pluralize}"
@nearby_type = "#{shop_type.pluralize}"
end
end
end
...
end
class Shop < ActiveRecord::Base
SHOP_TYPES = %w(cafe restaurant)
end
但是,它给了我syntax error, unexpected keyword_end, expecting $end
在最后end
属于class ShopsController < ApplicationController
。我试图保持代码干燥,以便我不必手动编码:
class ShopsController < ApplicationController
...
def nearby_cafes
@nearby_type = "cafes"
end
def nearby_restaurants
@nearby_type = "restaurants"
end
...
end
我做了什么错了?谢谢。
我傻就行了
do
!需要睡眠! – Victor我还是比较新的(关于回答问题):为什么这个简单的答案对于一个简单的问题得到了更多的赞扬,而不是对更复杂问题的更详细的回答?只是巧合,还是我错过了什么? – doesterr
我想有些人(包括我)错过了“做”。在官方的API码头中,并没有说我们实际上可以将它用作块。但是这里的第一个注释http://apidock.com/ruby/Module/define_method#762-define-method-with-parameters表明我们确实可以。所以你的赞扬实际上拯救了很多错过了'做'的人。再次感谢。 – Victor