djb*_*ick 2 ruby ruby-on-rails
如何将值传递给在rails模型上调用的动态方法名称?
@model.send(dynamic_method_name.to_sym,123)
Run Code Online (Sandbox Code Playgroud)
这给出了错误:
wrong number of arguments (1 for 0)
Run Code Online (Sandbox Code Playgroud)
如果我使用相同的方法,但是:
@model.post_id = 123
Run Code Online (Sandbox Code Playgroud)
然后它工作.
因此,post_id方法有一个"setter"方法(因此也就是动态方法名称).
当方法是动态的时,如何将值传递给此setter?
谢谢!
您需要将"="添加到dynamic_method_name.在ruby中,:post_id是getter :post_id=的名称,是setter的名称.这.to_sym不是绝对必要的,所以你可以这样做:
@model.send("#{dynamic_method_name}=", 123)
Run Code Online (Sandbox Code Playgroud)