【问题标题】:Ruby on Rails - Render form for modelRuby on Rails - 模型的渲染表单
【发布时间】:2012-09-08 23:31:08
【问题描述】:

当我为我正在使用的模型渲染局部时:

<%= partial @my_model %>

它会自动查找文件 ..view/my_models/_my_model.html.erb 我真的很喜欢这个符号,因为它感觉正确!

我的问题: 现在我想要一个符号来自动查找编辑部分。 有办法吗?到现在为止我用过

<%= partial 'edit' %>

这没关系,但是我的模型有很多子类,我喜欢它自动在模板的正确子类视图文件夹中查找的方式。 直到知道我必须为我的模型寻找类,然后调用

<% if @my_model.class == FirstSubClass %>
    <%= partial 'firstsubclasses/_edit.html.erb' %>
<% elsif @my_model.class == SecondSubClass %>
    <%= partial 'secondsubclasses/_edit.html.erb' %>
<% end %>

我更喜欢一行 :) 有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 renderpartial


    【解决方案1】:

    试试:

    <%= partial '#{@my_model.class.name.tableize}/_edit.html.erb' %>
    

    tableize 是ActiveSupport::Inflector 的一个方法,其中包含了其他一些很酷的命名操作方法。

    【讨论】:

    • 请注意,如果模型对象是任何其他子类,这将与原始代码的行为不同
    猜你喜欢
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 2013-06-24
    • 2010-11-10
    • 2017-05-07
    • 1970-01-01
    • 2011-01-11
    相关资源
    最近更新 更多