mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Added the possibility of passing nil to UrlHelper#link_to to use the link itself as the name
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@338 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
f92ae75a23
commit
efe0348486
4 changed files with 46 additions and 15 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
*SVN*
|
||||||
|
|
||||||
|
* Added the possibility of passing nil to UrlHelper#link_to to use the link itself as the name
|
||||||
|
|
||||||
|
|
||||||
*1.2.0* (January 4th, 2005)
|
*1.2.0* (January 4th, 2005)
|
||||||
|
|
||||||
* Added MemCacheStore for storing session data in Danga's MemCache system [Bob Cottrell]
|
* Added MemCacheStore for storing session data in Danga's MemCache system [Bob Cottrell]
|
||||||
|
|
|
@ -130,15 +130,15 @@ module ActionController #:nodoc:
|
||||||
# The passed <tt>filters</tt> will be appended to the array of filters that's run _before_ actions
|
# The passed <tt>filters</tt> will be appended to the array of filters that's run _before_ actions
|
||||||
# on this controller are performed.
|
# on this controller are performed.
|
||||||
def append_before_filter(*filters, &block)
|
def append_before_filter(*filters, &block)
|
||||||
filters << block if block_given?
|
filters << block if block_given?
|
||||||
append_filter_to_chain("before", filters)
|
append_filter_to_chain("before", filters)
|
||||||
end
|
end
|
||||||
|
|
||||||
# The passed <tt>filters</tt> will be prepended to the array of filters that's run _before_ actions
|
# The passed <tt>filters</tt> will be prepended to the array of filters that's run _before_ actions
|
||||||
# on this controller are performed.
|
# on this controller are performed.
|
||||||
def prepend_before_filter(*filters, &block)
|
def prepend_before_filter(*filters, &block)
|
||||||
filters << block if block_given?
|
filters << block if block_given?
|
||||||
prepend_filter_to_chain("before", filters)
|
prepend_filter_to_chain("before", filters)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Short-hand for append_before_filter since that's the most common of the two.
|
# Short-hand for append_before_filter since that's the most common of the two.
|
||||||
|
@ -147,15 +147,15 @@ module ActionController #:nodoc:
|
||||||
# The passed <tt>filters</tt> will be appended to the array of filters that's run _after_ actions
|
# The passed <tt>filters</tt> will be appended to the array of filters that's run _after_ actions
|
||||||
# on this controller are performed.
|
# on this controller are performed.
|
||||||
def append_after_filter(*filters, &block)
|
def append_after_filter(*filters, &block)
|
||||||
filters << block if block_given?
|
filters << block if block_given?
|
||||||
append_filter_to_chain("after", filters)
|
append_filter_to_chain("after", filters)
|
||||||
end
|
end
|
||||||
|
|
||||||
# The passed <tt>filters</tt> will be prepended to the array of filters that's run _after_ actions
|
# The passed <tt>filters</tt> will be prepended to the array of filters that's run _after_ actions
|
||||||
# on this controller are performed.
|
# on this controller are performed.
|
||||||
def prepend_after_filter(*filters, &block)
|
def prepend_after_filter(*filters, &block)
|
||||||
filters << block if block_given?
|
filters << block if block_given?
|
||||||
prepend_filter_to_chain("after", filters)
|
prepend_filter_to_chain("after", filters)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Short-hand for append_after_filter since that's the most common of the two.
|
# Short-hand for append_after_filter since that's the most common of the two.
|
||||||
|
|
|
@ -13,15 +13,18 @@ module ActionView
|
||||||
|
|
||||||
# Creates a link tag of the given +name+ using an URL created by the set of +options+. See the valid options in
|
# Creates a link tag of the given +name+ using an URL created by the set of +options+. See the valid options in
|
||||||
# link:classes/ActionController/Base.html#M000021. It's also possible to pass a string instead of an options hash to
|
# link:classes/ActionController/Base.html#M000021. It's also possible to pass a string instead of an options hash to
|
||||||
# get a link tag that just points without consideration. The html_options have a special feature for creating javascript
|
# get a link tag that just points without consideration. If nil is passed as a name, the link itself will become the name.
|
||||||
# confirm alerts where if you pass :confirm => 'Are you sure?', the link will be guarded with a JS popup asking that question.
|
# The html_options have a special feature for creating javascript confirm alerts where if you pass :confirm => 'Are you sure?',
|
||||||
# If the user accepts, the link is processed, otherwise not.
|
# the link will be guarded with a JS popup asking that question. If the user accepts, the link is processed, otherwise not.
|
||||||
def link_to(name, options = {}, html_options = {}, *parameters_for_method_reference)
|
def link_to(name, options = {}, html_options = {}, *parameters_for_method_reference)
|
||||||
convert_confirm_option_to_javascript!(html_options) unless html_options.nil?
|
convert_confirm_option_to_javascript!(html_options) unless html_options.nil?
|
||||||
if options.is_a?(String)
|
if options.is_a?(String)
|
||||||
content_tag "a", name, (html_options || {}).merge({ "href" => options })
|
content_tag "a", name || options, (html_options || {}).merge({ "href" => options })
|
||||||
else
|
else
|
||||||
content_tag("a", name, (html_options || {}).merge({ "href" => url_for(options, *parameters_for_method_reference) }))
|
content_tag(
|
||||||
|
"a", name || url_for(options, *parameters_for_method_reference),
|
||||||
|
(html_options || {}).merge({ "href" => url_for(options, *parameters_for_method_reference) })
|
||||||
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,24 @@ class FilterTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class LimitedFilterController < ActionController::Base
|
||||||
|
before_filter :ensure_login, :for => :show
|
||||||
|
|
||||||
|
def show
|
||||||
|
render_text "ran action"
|
||||||
|
end
|
||||||
|
|
||||||
|
def show_without_filter
|
||||||
|
render_text "ran action without filter"
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def ensure_login
|
||||||
|
@ran_filter ||= []
|
||||||
|
@ran_filter << "ensure_login"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class PrependingController < TestController
|
class PrependingController < TestController
|
||||||
prepend_before_filter :wonderful_life
|
prepend_before_filter :wonderful_life
|
||||||
|
|
||||||
|
@ -125,6 +143,11 @@ class FilterTest < Test::Unit::TestCase
|
||||||
def test_running_filters_with_class
|
def test_running_filters_with_class
|
||||||
assert test_process(AuditController).template.assigns["was_audited"]
|
assert test_process(AuditController).template.assigns["was_audited"]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_running_limited_filters
|
||||||
|
assert_equal %w( fire_flash ensure_login ), test_process(LimitedFilterController, "show").template.assigns["ran_filter"]
|
||||||
|
assert_equal %w( fire_flash ), test_process(LimitedFilterController, "show_without_filter").template.assigns["ran_filter"]
|
||||||
|
end
|
||||||
|
|
||||||
def test_bad_filter
|
def test_bad_filter
|
||||||
assert_raises(ActionController::ActionControllerError) {
|
assert_raises(ActionController::ActionControllerError) {
|
||||||
|
@ -151,9 +174,9 @@ class FilterTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def test_process(controller)
|
def test_process(controller, action = "show")
|
||||||
request = ActionController::TestRequest.new
|
request = ActionController::TestRequest.new
|
||||||
request.action = "show"
|
request.action = action
|
||||||
controller.process(request, ActionController::TestResponse.new)
|
controller.process(request, ActionController::TestResponse.new)
|
||||||
end
|
end
|
||||||
end
|
end
|
Loading…
Reference in a new issue