1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Clean up the simply_helpful merge.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6751 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Jeremy Kemper 2007-05-18 00:36:14 +00:00
parent ebee0a742d
commit 1ac7cd56fe
8 changed files with 46 additions and 32 deletions

View file

@ -560,7 +560,7 @@ module ActionController #:nodoc:
when Hash
@url.rewrite(rewrite_options(options))
else
polymorphic_url(options, self)
polymorphic_url(options)
end
end
@ -1034,7 +1034,6 @@ module ActionController #:nodoc:
else
redirect_to(url_for(options))
response.redirected_to = options
end
end

View file

@ -1,40 +1,38 @@
module ActionController
module PolymorphicRoutes
extend self
def polymorphic_url(record_or_hash, url_writer, options = {})
def polymorphic_url(record_or_hash, options = {})
record = extract_record(record_or_hash)
case
when options[:action] == "new"
url_writer.send(
send(
action_prefix(options) + RecordIdentifier.singular_class_name(record) + routing_type(options)
)
when record.respond_to?(:new_record?) && record.new_record?
url_writer.send(
send(
action_prefix(options) + RecordIdentifier.plural_class_name(record) + routing_type(options)
)
else
url_writer.send(
send(
action_prefix(options) + RecordIdentifier.singular_class_name(record) + routing_type(options), record_or_hash
)
end
end
def polymorphic_path(record_or_hash, url_writer)
polymorphic_url(record_or_hash, url_writer, :routing_type => :path)
def polymorphic_path(record_or_hash)
polymorphic_url(record_or_hash, :routing_type => :path)
end
%w( edit new formatted ).each do |action|
module_eval <<-EOT
def #{action}_polymorphic_url(record_or_hash, url_writer)
polymorphic_url(record_or_hash, url_writer, :action => "#{action}")
module_eval <<-EOT, __FILE__, __LINE__
def #{action}_polymorphic_url(record_or_hash)
polymorphic_url(record_or_hash, :action => "#{action}")
end
def #{action}_polymorphic_path(record_or_hash, url_writer)
polymorphic_url(record_or_hash, url_writer, :action => "#{action}", :routing_type => :path)
def #{action}_polymorphic_path(record_or_hash)
polymorphic_url(record_or_hash, :action => "#{action}", :routing_type => :path)
end
EOT
end
@ -44,13 +42,13 @@ module ActionController
def action_prefix(options)
options[:action] ? "#{options[:action]}_" : ""
end
def routing_type(options)
"_#{options[:routing_type] || "url"}"
end
def extract_record(record_or_hash)
record_or_hash.is_a?(Hash) ? record_or_hash[:id] : record_or_hash
end
end
end
end

View file

@ -167,6 +167,7 @@ module ActionView
object = record_or_name
object_name = ActionController::RecordIdentifier.singular_class_name(record_or_name)
apply_form_for_options!(object, options)
args.unshift object
end
concat(form_tag(options.delete(:url) || {}, options.delete(:html) || {}), proc.binding)
@ -184,7 +185,7 @@ module ActionView
options[:html] ||= {}
options[:html].reverse_merge!(html_options)
options[:url] ||= polymorphic_path(object, self)
options[:url] ||= polymorphic_path(object)
end
# Creates a scope around a specific model object like form_for, but doesn't create the form tags themselves. This makes

View file

@ -191,6 +191,7 @@ module ActionView
object = record_or_name
object_name = ActionController::RecordIdentifier.singular_class_name(record_or_name)
apply_form_for_options!(object, options)
args.unshift object
end
concat(form_remote_tag(options), proc.binding)

View file

@ -75,7 +75,7 @@ module ActionView
url = @controller.send(:url_for, nil)
else
escape = false
url = polymorphic_path(options, self)
url = polymorphic_path(options)
end
escape ? html_escape(url) : url

View file

@ -48,19 +48,34 @@ module ActionView
private
# Deprecated, use render :partial
def render_partial(partial_path, local_assigns = nil, deprecated_local_assigns = nil) #:nodoc:
path, partial_name = partial_pieces(partial_path)
object = extracting_object(partial_name, local_assigns, deprecated_local_assigns)
local_assigns = extract_local_assigns(local_assigns, deprecated_local_assigns)
local_assigns = local_assigns ? local_assigns.clone : {}
add_counter_to_local_assigns!(partial_name, local_assigns)
add_object_to_local_assigns!(partial_name, local_assigns, object)
case partial_path
when String, Symbol, NilClass
path, partial_name = partial_pieces(partial_path)
object = extracting_object(partial_name, local_assigns, deprecated_local_assigns)
local_assigns = extract_local_assigns(local_assigns, deprecated_local_assigns)
local_assigns = local_assigns ? local_assigns.clone : {}
add_counter_to_local_assigns!(partial_name, local_assigns)
add_object_to_local_assigns!(partial_name, local_assigns, object)
if logger
ActionController::Base.benchmark("Rendered #{path}/_#{partial_name}", Logger::DEBUG, false) do
if logger
ActionController::Base.benchmark("Rendered #{path}/_#{partial_name}", Logger::DEBUG, false) do
render("#{path}/_#{partial_name}", local_assigns)
end
else
render("#{path}/_#{partial_name}", local_assigns)
end
when Array
if partial_path.any?
path = ActionController::RecordIdentifier.partial_path(partial_path.first)
collection = partial_path
render_partial_collection(path, collection, nil, local_assigns.value)
else
""
end
else
render("#{path}/_#{partial_name}", local_assigns)
render_partial(
ActionController::RecordIdentifier.partial_path(partial_path),
local_assigns, deprecated_local_assigns)
end
end

View file

@ -601,11 +601,11 @@ class FormHelperTest < Test::Unit::TestCase
protected
def polymorphic_path(record, url_writer)
def polymorphic_path(record)
if record.new_record?
"/posts"
else
"/posts/#{record.id}"
end
end
end
end

View file

@ -214,7 +214,7 @@ class PrototypeHelperTest < Test::Unit::TestCase
"/authors"
end
def polymorphic_path(record, url_writer)
def polymorphic_path(record)
if record.new_record?
"/authors"
else