用于查看路径的类名

时间:2010-03-23 21:02:52

标签: ruby-on-rails actionview

我有一个RoR应用程序和模型SomeModel。我有这个模型的视图,我想知道 - 是否有任何方法来获取视图的路径?当然我可以用于这个模型实例

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

它有效,但也许你知道更好的方法吗? :)

4 个答案:

答案 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和/或嵌套和多态关系时。