CARVIEW |
We got nominated! Help us out and vote for GitHub as Best Bootstrapped Startup of 2008. (You can vote once a day.) [ hide ]
Every repository with this icon (

Every repository with this icon (

Fork of defunkt/acts_as_textiled | |
Description: | Makes your models act as textiled. |
Homepage: | https://errtheblog.com/posts/12-actsastextiled |
Clone URL: |
git://github.com/github/acts_as_textiled.git
Give this clone URL to anyone.
git clone git://github.com/github/acts_as_textiled.git
|
name | age | message | |
---|---|---|---|
![]() |
CHANGES | Sun Jun 03 04:35:21 -0700 2007 | add in acts_as_textiled api changes [defunkt] |
![]() |
LICENSE | Wed Aug 09 22:22:32 -0700 2006 | initial import [defunkt] |
![]() |
README.rdoc | Tue Mar 11 23:20:48 -0700 2008 | readme is rdoc format [defunkt] |
![]() |
Rakefile | Tue Aug 21 15:38:04 -0700 2007 | yet more rdoc changes [defunkt] |
![]() |
about.yml | Sun Jun 03 04:35:21 -0700 2007 | add in acts_as_textiled api changes [defunkt] |
![]() |
init.rb | Wed Jun 13 08:48:48 -0700 2007 | acts_as_textiled: Fail to load RedCloth gracefu... [defunkt] |
![]() |
lib/ | Sun Jun 03 04:35:21 -0700 2007 | add in acts_as_textiled api changes [defunkt] |
![]() |
test/ | Sun Jun 03 04:35:21 -0700 2007 | add in acts_as_textiled api changes [defunkt] |
Acts as Textiled
This simple plugin allows you to forget about constantly rendering Textile in your application. Instead, you can rest easy knowing the Textile fields you want to display as HTML will always be displayed as HTML (unless you tell your code otherwise).
No database modifications are needed.
You need RedCloth, of course. And Rails.
Usage
class Story < ActiveRecord::Base acts_as_textiled :body_text, :description end >> story = Story.find(3) => #<Story:0x245fed8 ... > >> story.description => "<p>This is <strong>cool</strong>.</p>" >> story.description(:source) => "This is *cool*." >> story.description(:plain) => "This is cool." >> story.description = "I _know_!" => "I _know_!" >> story.save => true >> story.description => "<p>I <em>know</em>!</p>" >> story.textiled = false => false >> story.description => "I _know_!" >> story.textiled = true => true >> story.description => "<p>I <em>know</em>!</p>"
Different Modes
RedCloth supports different modes, such as :lite_mode. To use a mode on a specific attribute simply pass it in as an options hash after any attributes you don’t want to mode-ify. Like so:
class Story < ActiveRecord::Base acts_as_textiled :body_text, :description => :lite_mode end
Or:
class Story < ActiveRecord::Base acts_as_textiled :body_text => :lite_mode, :description => :lite_mode end
You can also pass in multiple modes per attribute:
class Story < ActiveRecord::Base acts_as_textiled :body_text, :description => [ :lite_mode, :no_span_caps ] end
Get it? Now let’s say you have an admin tool and you want the text to be displayed in the text boxes / fields as plaintext. Do you have to change all your views?
Hell no.
form_for
Are you using form_for? If you are, you don’t have to change any code at all.
<% form_for :story, @story do |f| %> Description: <br/> <%= f.text_field :description %> <% end %>
You’ll see the Textile plaintext in the text field. It Just Works.
form tags
If you’re being a bit unconvential, no worries. You can still get at your raw Textile like so:
Description: <br/> <%= text_field_tag :description, @story.description(:source) %>
And there’s always object.textiled = false, as demo’d above.
Pre-fetching
acts_as_textiled locally caches rendered HTML once the attribute in question has been requested. Obviously this doesn’t bode well for marshalling or caching.
If you need to force your object to build and cache HTML for all textiled attributes, call the textilize method on your object.
If you’re real crazy you can even do something like this:
class Story < ActiveRecord::Base acts_as_textiled :body_text, :description def after_find textilize end end
All your Textile will now be ready to go in spiffy HTML format. But you probably won’t need to do this.
Enjoy.
- By Chris Wanstrath [ chris[at]ozmm[dot]org ]