在Rails控制器中使用define_method会产生语法错误

Vic*_*tor 0 ruby ruby-on-rails

使用Rails 3.2.以下是我的控制器:

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
Run Code Online (Sandbox Code Playgroud)

但是,它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
Run Code Online (Sandbox Code Playgroud)

我做错了什么?谢谢.

doe*_*err 5

define_method期待一个街区,你错过了do你打电话的路线define_method