【问题标题】:Class name to view path查看路径的类名
【发布时间】:2010-03-23 21:02:52
【问题描述】:

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

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

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

【问题讨论】:

  • 发帖人已经一个多月没有回复了,这个问题可能不需要再回答了。

标签: ruby-on-rails actionview


【解决方案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 ...)

【讨论】:

    【解决方案2】:

    视图通过控制器层处理模型。每个视图都对应于一些 rout/controller 动作。所以与控制器名称相关的视图路径: app/views/some_controller/{一堆文件}.html.erb

    并非总是如此,您的视图目录名将引用您的模型名称。所以没有通用的方法来找出视图目录名。

    您的解决方案是合适的,但并非适用于所有情况

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        to_partial_path 满足您的要求。

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

        【讨论】:

        • 虽然这可能会回答问题,但最好包括解决方案的重要部分(您通过链接提供),以便充分利用您的答案。仅链接答案(这是您目前拥有的)有两个缺点:无法通过搜索引擎找到非常好的答案,并且链接一旦断开就无效。请考虑编辑你的答案:) 谢谢
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-26
        • 2017-07-30
        • 1970-01-01
        相关资源
        最近更新 更多