i looked in the api, but it seems the method doesnt take any parameters
except for the object. basically all i want is the string of errors but
without the form fields highlighted and such.
thanks.
i looked in the api, but it seems the method doesnt take any parameters
except for the object. basically all i want is the string of errors but
without the form fields highlighted and such.
thanks.
I don’t think there’s an easy answer to turning the CSS off (other
than just not defining that style in your stylesheet) but you can get
the text of the individual error messages with
“error_message_on(object, method)” like:
error_message_on(user, username)
=> already in use
error_message_on(post, title)
=> can not be blank
hi andrew, thanks for the answer, i now know how to use error on
message…however, i am still having a problem where when the form is
redisplayed, my fields are shifted due to the addition of divs…
thanks, i will keep looking.
Hi –
On 3/16/07, mioxplate [email protected] wrote:
hi andrew, thanks for the answer, i now know how to use error on
message…however, i am still having a problem where when the form is
redisplayed, my fields are shifted due to the addition of divs…
There’s a proc that generates that div wrapper, and you can override
it. You can see the original/default one right near the top of
helpers/active_record_helper.rb in the ActionView directory of the
Rails source. You can override it at the bottom of your
config/environment.rb file.
For example, here’s a simple replacement proc that will write an error
message in red right next to each offending field:
ActionView::Base.field_error_proc = Proc.new {|html_tag, instance|
“
#{instance.method_name.capitalize}
#{instance.error_message}
A bit too simple for real life, probably, but it shows you the idea.
You can find more info, and some nice pre-written replacement procs,
by googling for field_error_proc.
David
–
Q. What is THE Ruby book for Rails developers?
A. RUBY FOR RAILS by David A. Black (http://www.manning.com/black)
(See what readers are saying! http://www.rubypal.com/r4rrevs.pdf)
Q. Where can I get Ruby/Rails on-site training, consulting, coaching?
A. Ruby Power and Light, LLC (http://www.rubypal.com)
might i recommend my gem http://rubyforge.org/projects/railserrorsfor/
you can install it by doing:
gem install error_messages_for
because of the way it works you can pass in your own partial on each
request, use a default partial if it exists
(RAILS_ROOT/app/views/application/_error_messages.rhtml), or it will use
the default rails code. this allows you to fully customize your error
messages section.
it also offers other great things like the ability to handle multiple
objects with one error_messages_for call!
here’s the readme:
This gem enchances the default rails functionality for the ActiveRecord
helper ‘error_messages_for’
What it does:
Example:
<%= error_messages_for [:user, :topic, :item] %>
With this bit of code you’ll get something that looks like the
following:
There were 3 errors that need to be fixed:
Example:
<%= error_messages_for :user, “my_errors” %>
You had 2 errors fool!
This is cool if you want to change the way errors are displayed in a
pop-up vs. your main site, or you want to change them on a whole section
of the site, etc…
Example:
user.business_name returns “User”
item.business_name returns “Item”
This is used when generating the error messages. Here’s the way a
message is rendered: “business_name column_name error_message”. So the
following model:
class Item < ActiveRecord::Base
validates_presence_of :body, :message => “can’t be blank.”
end
would produce the following error message:
“Item body can’t be blank.”
The business_name method allows you to override the first part of the
error message if your business speak doesn’t match your database speak.
An example would be if your business wants to call Items, Articles. In
that case you would do the following:
class Item < ActiveRecord::Base
validates_presence_of :body, :message => “can’t be blank.”
def business_name
“Article”
end
end
would produce the following error message:
“Article body can’t be blank.”
Pretty sweet, eh?
Example:
class Item < ActiveRecord::Base
validates_presence_of :body, :message => “^Oi, give us a body!!”
end
would produce the following error message:
“Oi, give us a body!!”
This gem offers you great flexibility, and probably should’ve been done
right from the start in Rails core. Hope it helps.
If you just replace that div [block level, and therefore layout
up-screwing
by default] with a layout-friendly span, it’s pretty much the same as
now
and can be styled the same but without the layout shifting and breaking
unexpectedly.
ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
“<span class=“error”>#{html_tag}”
end
Also, because you can change the display of a span [or any element] to
“block”, this method is the simplest. Though, now that I think about
it…
You could just change the display of the div to inline, couldn’t you?
Hrm…
Seems like there’s a few different ways to get this accomplished.
RSL
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs