我有一个RoR应用程序和模型SomeModel。我有这个模型的视图,我想知道 - 是否有任何方法来获取视图的路径?当然我可以用于这个模型实例
m = SomeModel.new
v = m.class.class_name.pluralize.downcase
它有效,但也许你知道更好的方法吗? :)
答案 0 :(得分: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的东西......)
答案 1 :(得分:0)
通过控制器层使用模型的视图。每个视图都对应一些路径/控制器动作。所以与控制器名称相关的视图路径: app / views / some_controller / {一堆文件} .html.erb
并非总是如此,您的视图dirname将引用您的模型名称。因此,没有通用的方法来查找视图dirname。
您的解决方案是合适的,但并非在所有情况下都适用
答案 2 :(得分:0)
如果您觉得需要模型中视图的路径,那么您可能会将逻辑放入属于控制器或帮助器的模型中。您可能会重新考虑如何对MVC逻辑进行分区。
答案 3 :(得分:0)
to_partial_path
按照你的要求行事。
这非常方便,尤其是在使用ajax和/或嵌套和多态关系时。