Change inside_namespace method to inside_template and use it in all templates by default

The initial implementation of namespacing was based on wrong
assumptions. Namespacing path and class names in templates
should be based on current namespace and skip_namespace attribute,
but it should be not necessary to wrap content on all the templates
into additional block methods.
This commit is contained in:
Piotr Sarnacki 2010-11-15 22:39:28 -06:00
parent a820d0afdd
commit ced8ebcee0
6 changed files with 20 additions and 31 deletions

View File

@ -1,4 +1,3 @@
<% without_namespacing do -%>
<%%= form_for(@<%= singular_table_name %>) do |f| %>
<%% if @<%= singular_table_name %>.errors.any? %>
<div id="error_explanation">
@ -22,4 +21,3 @@
<%%= f.submit %>
</div>
<%% end %>
<% end -%>

View File

@ -1,8 +1,6 @@
<% without_namespacing do -%>
<h1>Editing <%= singular_table_name %></h1>
<%%= render 'form' %>
<%%= link_to 'Show', @<%= singular_table_name %> %> |
<%%= link_to 'Back', <%= index_helper %>_path %>
<% end -%>

View File

@ -1,4 +1,3 @@
<% without_namespacing do -%>
<h1>Listing <%= plural_table_name %></h1>
<table>
@ -26,4 +25,3 @@
<br />
<%%= link_to 'New <%= human_name %>', new_<%= singular_table_name %>_path %>
<% end -%>

View File

@ -1,7 +1,5 @@
<% without_namespacing do -%>
<h1>New <%= singular_table_name %></h1>
<%%= render 'form' %>
<%%= link_to 'Back', <%= index_helper %>_path %>
<% end -%>

View File

@ -1,4 +1,3 @@
<% without_namespacing do -%>
<p id="notice"><%%= notice %></p>
<% for attribute in attributes -%>
@ -11,4 +10,3 @@
<%%= link_to 'Edit', edit_<%= singular_table_name %>_path(@<%= singular_table_name %>) %> |
<%%= link_to 'Back', <%= index_helper %>_path %>
<% end -%>

View File

@ -16,6 +16,14 @@ module Rails
parse_attributes! if respond_to?(:attributes)
end
no_tasks do
def template(source, *args, &block)
inside_template do
super
end
end
end
protected
attr_reader :file_name
alias :singular_name :file_name
@ -23,17 +31,9 @@ module Rails
# Wrap block with namespace of current application
# if namespace exists and is not skipped
def module_namespacing(&block)
inside_namespace do
content = capture(&block)
content = wrap_with_namespace(content) if namespaced?
concat(content)
end
end
def without_namespacing(&block)
inside_namespace do
concat(capture(&block))
end
content = capture(&block)
content = wrap_with_namespace(content) if namespaced?
concat(content)
end
def indent(content, multiplier = 2)
@ -46,12 +46,15 @@ module Rails
"module #{namespace.name}\n#{content}\nend\n"
end
def inside_namespace
@inside_namespace = true if namespaced?
result = yield
result
def inside_template
@inside_template = true
yield
ensure
@inside_namespace = false
@inside_template = false
end
def inside_template?
@inside_template
end
def namespace
@ -64,16 +67,12 @@ module Rails
!options[:skip_namespace] && namespace
end
def inside_namespace?
@inside_namespace
end
def file_path
@file_path ||= (class_path + [file_name]).join('/')
end
def class_path
inside_namespace? || !namespaced? ? regular_class_path : namespaced_class_path
inside_template? || !namespaced? ? regular_class_path : namespaced_class_path
end
def regular_class_path