cooked = raw + cooked
end
- def link_to_if_orvos_object(attrvalue, attr, object)
- if (resource_class = OrvosBase::resource_class_for_uuid(attrvalue, attr, object))
- link_to "#{resource_class.to_s} #{attrvalue}", { controller: resource_class.to_s.camelize(:lower).pluralize, action: 'show', id: attrvalue }
+ def link_to_if_orvos_object(attrvalue, opts={})
+ if (resource_class = OrvosBase::resource_class_for_uuid(attrvalue, opts[:referring_attr], opts[:referring_object]))
+ link_uuid = attrvalue.is_a?(OrvosBase) ? attrvalue.uuid : attrvalue
+ link_name = link_uuid
+ if !opts[:with_prefixes]
+ link_name = link_name.sub /^.{5}-.{5}-/, ''
+ end
+ if opts[:with_class_name]
+ link_name = "#{resource_class.to_s} #{link_name}"
+ end
+ link_to link_name, { controller: resource_class.to_s.underscore.pluralize, action: 'show', id: link_uuid }
else
attrvalue
end
end
def self.resource_class_for_uuid(uuid, attr_name=nil, object=nil)
+ if uuid.is_a? OrvosBase
+ return uuid.class
+ end
unless uuid.is_a? String
return nil
end
kind_class(self.uuid_infix_object_kind[re[1]])
end
if object and attr_name and attr_name.match /_uuid$/
- resource_class ||= $orvos_api_client.kind_class(object.attributes[attr.sub(/_uuid$/, '_kind')])
+ resource_class ||= $orvos_api_client.kind_class(object.attributes[attr_name.sub(/_uuid$/, '_kind')])
end
resource_class
end
<% elsif attrvalue.is_a? String or attrvalue.respond_to? :to_s %>
<tr>
<td><%= attr %></td>
- <td><%= link_to_if_orvos_object attrvalue, attr, @object %></td>
+ <td><%= link_to_if_orvos_object attrvalue, {referring_attr: attr, referring_object: @object, with_prefixes: true, with_class_name: true} %></td>
</tr>
<% end; end %>
</tbody>