我有一个包含多个控制器的 Rails 应用程序(用于我网站的不同页面)。一个用于常规文本页面的控制器,一个用于图库等的单独控制器。现在,我需要一个用于所有页面的可排序菜单。
我创建了一个名为 的模型MenuItems
,它有一个位置编号和与所有需要排序的模型的多态关联:
class MenuItem < ActiveRecord::Base
belongs_to :sortable, :polymorphic => true
end
问题是一些 MenuItems 应该指向相关的模型实例本身(如show
常规文本页面的操作),在这里我的关联可以解决问题。但是我还需要index
在我的菜单上列出操作(例如画廊列表页面),并且要实现它,我需要在模型和控制器中编写一些复杂且不清楚的逻辑,或者为 添加另一个字段url
,提供某种管理员填充这些 url 的界面。
它已经看起来很笨拙,根据我的经验,如果你在 Rails 中以复杂的方式做某事,你就做错了。但是最好的方法是什么?您通常如何处理应用程序中的复杂菜单?