2010-03-23 77 views
3

我有一个RoR应用程序和模型SomeModel。我对这个模型有了一些看法,我想知道 - 是否有任何方法可以获得视图的路径?当然,我可以用这个模型实例类名查看路径

m = SomeModel.new 
v = m.class.class_name.pluralize.downcase 

它的工作,但也许你知道一个更好的方法? :)

+0

已经过了一个月没有回复海报,没有更多的答案可能是必要的这个问题。 – 2010-04-29 17:14:40

回答

0

通过控制器层使用模型的视图。每个视图都与某些路由/控制器操作相对应。因此,与控制器名称相关的视图路径: app/views/some_controller/{一堆文件} .html.erb

这并非总是如此,您的视图dirname将引用您的型号名称。所以没有找到视图dirname的通用方法。

你的解决方案是合适的,但不是在所有情况下

1

正如@ fl00r说,不,还有要做到这一点没有一般方法,因为所有的视图的名称取决于各个应用的实现(不是每个控制器一个资源控制器),但你当然可以写一些助手,这样你就不必经常输入m.class.class_name.pluralize.downcase

module ViewPathHelper 
    def resource_view_path(model_obj, action) 
    "#{model_object.class.class_name.pluralize.downcase}/#{action}" 
    end 
end 

将是这样做的一种方式。

这似乎是一个有点奇怪的请求 - 你需要什么视图路径?你在做什么高度多态? (因为这个东西叫做polymorphic_path ...)

0

如果你觉得你需要模型中视图的路径,那么你很可能将逻辑放入属于控制器或助手的模型中。您可能会重新考虑如何划分您的MVC逻辑。

0

to_partial_path做你在问什么。

这非常方便,尤其是在使用ajax和/或嵌套和多态关系时。

+0

虽然这可能会回答这个问题,但最好包括解决方案的重要部分(通过链接提供)以便从您的答案中获得最佳效果。只有链接的答案(这是你现在拥有的)有两个缺点:通过搜索引擎找不到它,并且一旦链接被破坏,它们就无效。请认为aubout编辑你回答:)谢谢 – cramopy 2017-10-31 12:57:58