sam*_*207 2 ruby methods eval ruby-on-rails
我有以下场景
我想动态地向控制器添加方法.我的所有方法名都在一个表中.请参考以下示例
-table (method_names)-
1 - Walk
2 - Speek
3 - Run
Run Code Online (Sandbox Code Playgroud)
我有一个控制器
class UsersController < ApplicationController
def index
end
end
Run Code Online (Sandbox Code Playgroud)
在这个索引动作中,我想动态调用我的方法.那些方法实际上是在其他方面实现的
我有另一个控制器
class ActionImplementController < ApplicationController
def walk
puts "I'm walking"
end
def speek
puts "I'm sppeking"
end
def run
puts "I'm running"
end
end
Run Code Online (Sandbox Code Playgroud)
**我做过类似下面的事情并且正在努力
class UsersController < ApplicationController
def index
a = eval("ActionImplementController.new.run")
end
end
Run Code Online (Sandbox Code Playgroud)
但我的问题是,这是正确的方式还是有其他方法来做到这一点
提前致谢
干杯
sameera
虽然第一个答案有效,但我更喜欢这样的事情
module ImplementsActions
def run
...
end
def walk
..
end
def ...
end
Run Code Online (Sandbox Code Playgroud)
然后在你的控制器写
class UsersController < ActionController::Base
include ImplementsActions
# now you can just use run/speek/walk
def index
run
end
end
Run Code Online (Sandbox Code Playgroud)
更清洁,因为代码可以共享,但它是在您需要的地方定义的.
| 归档时间: |
|
| 查看次数: |
1306 次 |
| 最近记录: |