为对象的动态部分名称 [英] Dynamic partial name for an object

查看:254
本文介绍了为对象的动态部分名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 渲染@some_object
 

将呈现 Rails.root /应用/视图/ some_objects / _some_object.html.erb

现在我要处理这部分将被渲染取决于其 DATA_TYPE 字段。例如:

 类SomeObject< AR :: Base的
  #一些难懂的方法至极我需要重写
  高清partial_name
    案例DATA_TYPE
    当字符串
      string_template
    在文本
      text_template
    其他
      blank_template
    结束
  结束
结束
 

我知道有 MODEL_NAME i18n_key 和一些其他国家,这是returnes型号名称,但哪一个是在我的渲染@object使用情况?

修改

现在我已经停在一个没有触及模式最简单的解决方案。我删除了所有这种逻辑到 _some_object.html.erb 部分,所以它呈现的部分我需要自身内部:

 < D​​IV CLASS ='claim_template_field'&GT​​;
  &其中;%=渲染/some_objects/#{f.object.data_type.downcase}_template,:F => F%>
< / DIV>
 

解决方案

现在我已经停在一个没有触及模式最简单的解决方案。我删除了所有这种逻辑到_some_object.html.erb部分,所以它呈现的部分我需要自身内部:

 < D​​IV CLASS ='claim_template_field'&GT​​;
  &其中;%=渲染/some_objects/#{f.object.data_type.downcase}_template,:F => F%>
< / DIV>
 

render @some_object

will render Rails.root/app/views/some_objects/_some_object.html.erb

Now I want to handle which partial will be rendered depends on its data_type field. For example:

class SomeObject < AR::Base
  # some magick method wich I need to rewrite
  def partial_name
    case data_type
    when "String"
      "string_template"
    when "Text"
      "text_template"
    else
      "blank_template"
    end
  end
end

I know there is model_name, i18n_key and some others, which are returnes model name, but which one is used in my render @object case?

EDIT

Now I've stopped on the easiest solution that didn't touch models. I removed all this logic into _some_object.html.erb partial, so it renders partial I need inside of itself:

<div class='claim_template_field'>
  <%= render "/some_objects/#{f.object.data_type.downcase}_template", :f => f %>
</div>

解决方案

Now I've stopped on the easiest solution that didn't touch models. I removed all this logic into _some_object.html.erb partial, so it renders partial I need inside of itself:

<div class='claim_template_field'>
  <%= render "/some_objects/#{f.object.data_type.downcase}_template", :f => f %>
</div>

这篇关于为对象的动态部分名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆