在Rails中为constantized字符串添加范围

时间:2015-02-10 18:55:04

标签: ruby-on-rails ruby ruby-on-rails-4

我正在尝试将范围发送到创建即时变量的操作。这是我的尝试:

foo_controller.rb

    define_method(:generate_index) do |string, scope|
        instance_variable_set( "@#{string}", (string.camelize.constantize).public_send scope )
    end

   def index
      generate_index("foo", "all")
   end

在上面的例子中,我们希望创建以下内容:

def index
    @foo = Foo.all
end

相反,我收到一条错误说明:

unexpected tSYMBEG, expecting ')'

是否有人可以协助指出我哪里出错了?

由于

1 个答案:

答案 0 :(得分:1)

只需添加一些括号。

define_method(:generate_index) do |string, scope|
    instance_variable_set( "@#{string}", string.camelize.constantize.public_send(scope))
end