Skip to content

Commit

Permalink
all table-related methods namespaced and moved to the helpers
Browse files Browse the repository at this point in the history
  • Loading branch information
Aaron Wheeler committed Apr 26, 2008
1 parent bea4d3d commit 9eaabd7
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 36 deletions.
32 changes: 32 additions & 0 deletions lib/merb_autoscaffold/view_helpers.rb
Expand Up @@ -3,5 +3,37 @@ module ViewHelpers
def scaf_title( obj )
obj.try(:title) || obj.try(:name) || "#{ obj.class.to_s } ##{ obj.id }"
end

def scaf_link( obj )
<<-EOS
<a href="#{ url( obj.class.singular_name, obj ) }">
#{ scaf_title( obj ) }
</a>
EOS
end

def scaf_table() database.schema[ self.class.Model ]; end
def scaf_columns() scaf_table.columns; end
def scaf_assocs() scaf_table.associations; end
def scaf_has_manys
scaf_assocs.select { |a|
a.is_a?(DataMapper::Associations::HasManyAssociation)
}
end

def scaf_belongs_tos
scaf_assocs.select { |a|
a.is_a?(DataMapper::Associations::BelongsToAssociation)
}
end

def scaf_assoc_hash
Hash[*scaf_belongs_tos.collect {|a| [a.foreign_key_name, a]}.flatten]
end

def scaf_foreign_keys
scaf_belongs_tos.collect(&:foreign_key_name)
end

end
end
20 changes: 3 additions & 17 deletions lib/merb_autoscaffold/views/_form.html.erb
@@ -1,20 +1,7 @@
<%
table = database.schema[ self.class.Model ]
columns = table.columns
associations = table.associations
#has_manys = associations.select { |a|
# a.is_a?(DataMapper::Associations::HasManyAssociation)
# }.collect(&:association_name)
belongs_tos = associations.select { |a|
a.is_a?(DataMapper::Associations::BelongsToAssociation)
}
foreign_keys = belongs_tos.collect(&:foreign_key_name)
%>

<dl>
<% columns.each do |column| %>
<% scaf_columns.each do |column| %>
<% next if foreign_keys.include?( column.name ) %>
<% next if scaf_foreign_keys.include?( column.name ) %>

<dt><%= column.name %></dt>
<dd>
Expand All @@ -37,14 +24,13 @@
</dd>
<% end %>
<% for bt in belongs_tos %>
<% for bt in scaf_belongs_tos %>
<dt><%= bt.name %></dt>
<dd>
<%= partial( 'belongs_to', :association => bt, :model => model ) %>
</dd>
<% end %>
<% if action_name != 'new' %>
<% end %>
</dl>
2 changes: 2 additions & 0 deletions lib/merb_autoscaffold/views/_has_many_show.html.erb
Expand Up @@ -2,7 +2,9 @@
# Partial for displaying the items in a has_many relationship
#
# ==== Parameters
#
# model<DataMapper::Base>: the model to which the relationship belongs
#
# association<DataMapper::Associations::HasManyAssociation>: the association that forms the
# basis for the relationship
%>
Expand Down
26 changes: 7 additions & 19 deletions lib/merb_autoscaffold/views/show.html.erb
@@ -1,17 +1,3 @@
<%
table = database.schema[ self.class.Model ]
columns = table.columns
associations = table.associations
#has_manys = associations.select { |a|
# a.is_a?(DataMapper::Associations::HasManyAssociation)
# }.collect(&:association_name)
belongs_tos = associations.select { |a|
a.is_a?(DataMapper::Associations::BelongsToAssociation)
}
#foreign_keys = belongs_tos.collect(&:foreign_key_name)
assoc_hash = Hash[*belongs_tos.collect {|a| [a.foreign_key_name, a]}.flatten]
%>

<h1>
<%= scaf_title( @model ) %>
</h1>
Expand All @@ -28,17 +14,19 @@
</ul>

<dl>
<% table.columns.each do |column| %>
<% scaf_table.columns.each do |column| %>
<dt><%= column.name %></dt>
<dd>
<% if association = assoc_hash[column.name] %>
<% if association = scaf_assoc_hash[column.name] %>
<% obj = association.constant.get( @model.send( column.name ) ) %>
<a href="<%= url( association.constant.singular_name, obj ) %>">
<%= scaf_title( obj ) %>
</a>
<%= scaf_link( obj ) %>
<% else %>
<%= @model.send( column.name ) %>
<% end %>
</dd>
<% end %>
<% for association in scaf_has_manys %>
<%= partial( :has_many_show, :model => @model, :association => association ) %>
<% end %>
</dl>

0 comments on commit 9eaabd7

Please sign in to comment.