在我的用户模型中,我有一些属性,如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?
但当然这不起作用。有什么想法吗?
答案 0 :(得分:12)
尝试使用send
:
if current_user.send("is_#{@model}_admin?")