简单的ruby方法帮助器

时间:2014-07-16 15:50:19

标签: ruby-on-rails ruby

我只是在学习ruby,并且想要练习为rails编写小帮助方法,这是修改基础知识的好方法。 我想做的就是为范围对象提供一个计数器。

所以在我看来我写这个

=stats_counter_for(with_pending_state)

' pending_state'是该模型的特定范围。

def stats_counter_for(object_state)
    Photo.object_state.count
end

所以我想通过这个来提供所有具有待定状态的项目的计数。

所以最终我可以做到

=stats_counter_for(with_active_state)
=stats_counter_for(with_inactive_state)

(等于来自haml视图)

更新错误消息

undefined local variable or method `with_pending_state' for #<#<Class:0x007fbce1118230>:0x007fbce1123770>
=link_to '/ Pending Approval', pending_admin_entries_path
=stats_counter_for(with_pending_state)
=link_to '/ Rejected', rejected_admin_entries_path

我在哪里错了?我确信这非常简单。

1 个答案:

答案 0 :(得分:4)

您可以使用send方法:

def stats_counter_for(state)
  Photo.send("with_#{state}_state").count
end

因此,在您的观点中,您可以像这样使用它:

= stats_counter_for(:active) # or as a string 'active'
= stats_counter_for(:inactive)