As a side benefit, fix an (non-user-visible) bug in display_s5(). Also fixed a bug where removing orphaned pages did not expire cached summary pages.
62 lines
1.9 KiB
Plaintext
62 lines
1.9 KiB
Plaintext
== Create a `squawk_info_for` view helper ==
|
|
|
|
Creating a view helper is a 3-step process:
|
|
|
|
* Add an appropriately named file to the 'lib' directory.
|
|
* Require the file and hooks in 'init.rb'.
|
|
* Write the tests.
|
|
|
|
First, create the test to define the functionality you want:
|
|
|
|
[source, ruby]
|
|
---------------------------------------------------------------
|
|
# File: vendor/plugins/yaffle/test/view_helpers_test.rb
|
|
|
|
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
include YaffleViewHelper
|
|
|
|
class ViewHelpersTest < Test::Unit::TestCase
|
|
def test_squawk_info_for_should_return_the_text_and_date
|
|
time = Time.now
|
|
hickwall = Hickwall.new
|
|
hickwall.last_squawk = "Hello World"
|
|
hickwall.last_squawked_at = time
|
|
assert_equal "Hello World, #{time.to_s}", squawk_info_for(hickwall)
|
|
end
|
|
end
|
|
---------------------------------------------------------------
|
|
|
|
Then add the following statements to init.rb:
|
|
|
|
[source, ruby]
|
|
---------------------------------------------------------------
|
|
# File: vendor/plugins/yaffle/init.rb
|
|
|
|
require "view_helpers"
|
|
ActionView::Base.send :include, YaffleViewHelper
|
|
---------------------------------------------------------------
|
|
|
|
Then add the view helpers file and
|
|
|
|
[source, ruby]
|
|
---------------------------------------------------------------
|
|
# File: vendor/plugins/yaffle/lib/view_helpers.rb
|
|
|
|
module YaffleViewHelper
|
|
def squawk_info_for(yaffle)
|
|
returning "" do |result|
|
|
result << yaffle.read_attribute(yaffle.class.yaffle_text_field)
|
|
result << ", "
|
|
result << yaffle.read_attribute(yaffle.class.yaffle_date_field).to_s
|
|
end
|
|
end
|
|
end
|
|
---------------------------------------------------------------
|
|
|
|
You can also test this in script/console by using the `helper` method:
|
|
|
|
---------------------------------------------------------------
|
|
$ ./script/console
|
|
>> helper.squawk_info_for(@some_yaffle_instance)
|
|
---------------------------------------------------------------
|