如何将符号传递给实例的属性?

时间:2014-04-01 23:07:10

标签: ruby-on-rails ruby ruby-on-rails-3

如何将符号参数传递给实例的属性?

<%= image_input_and_display(f, :footer, '1140 x 104 pixels') %>

def image_input_and_display(f, symbol, hint)
  f.input symbol, hint: hint
  if @user.symbol.exists?
    ...
  end
end

我正在尝试运行该函数,在本例中为if @user.footer.exists?。有线索吗?

2 个答案:

答案 0 :(得分:2)

在这种情况下,您希望在知道它的名称后执行一个方法,这样Object#send就是您想要的。 send以其名称运行方法。

@user.send(symbol).exists?

请注意,这可以访问该对象上的所有方法。这会怎么做?

image_input_and_display(f, :destroy, '1140 x 104 pixels')

答案是什么?非常糟糕的事情。它看起来好像只是访问一个房产,但它可能正在做一些你没想到的事情。小心:)

答案 1 :(得分:1)

不确定我到底知道你在问什么,但这听起来像是一个动态的方法调用。 Object implements send。您可以拨打@user.send(symbol)