我只是在学习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
我在哪里错了?我确信这非常简单。
答案 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)