在方法调用中插入Ruby?

时间:2011-10-24 20:18:40

标签: ruby-on-rails ruby

在我的用户模型中,我有一些属性,如is_foos_admin和is_bars_admin,用于确定允许用户编辑哪种记录。

我想干掉我的编辑链接,目前看起来像这样:

<%= link_to 'Edit', edit_foo_path(foo), :class => 'edit' if current_user.is_foos_admin? %>
...
<%= link_to 'Edit', edit_bar_path(bar), :class => 'edit' if current_user.is_bars_admin? %>

我想制作一个帮助程序,让我传入foo或bar并获取一个链接进行编辑,如下所示:

<%= edit_link_for(foo) %>

帮助器可能看起来像(不起作用)

def edit_link_for(thing)
  if current_user.is_things_admin?
    link_to 'Edit', edit_polymorphic_path(thing), :class => 'edit'
  end
end

与模型无关的edit_polymorphic_path方法让我到了中途,但这是“is_things_admin”方法,我不知道如何通用化。如果我可以在帮助器中使用插值Ruby,我想做类似

的操作
if current_user.is_#{thing.class.name.downcase.pluralize}_admin?

但当然这不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:12)

尝试使用send

if current_user.send("is_#{@model}_admin?")