# How do you use :message with validation?

**URL:** <https://www.ruby-forum.com/t/how-do-you-use-message-with-validation/99114>\
**Category:** Rails\
**Created:** [July 20, 2006, 11:25am UTC](https://www.ruby-forum.com/t/how-do-you-use-message-with-validation/99114 "2006-07-20T11:25:28Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![blewis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/c57346/32.png) [@blewis](https://www.ruby-forum.com/u/blewis)\
**Post date:** [July 20, 2006, 11:25am UTC](https://www.ruby-forum.com/t/how-do-you-use-message-with-validation/99114/1 "2006-07-20T11:25:28Z")

</div>

If I do validates\_uniqueness\_of :name, :message =\> “It’s not  
uniqueeee!!!”

then how do I have it display that message when the check fails?

-Ben L.

---

<div class="post-metadata">

**Author:** ![blewis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/c57346/32.png) [@blewis](https://www.ruby-forum.com/u/blewis)\
**Post date:** [July 20, 2006, 11:34am UTC](https://www.ruby-forum.com/t/how-do-you-use-message-with-validation/99114/2 "2006-07-20T11:34:04Z")

</div>

Ben L. wrote:

> If I do validates\_uniqueness\_of :name, :message =\> “It’s not  
> uniqueeee!!!”
> 
> then how do I have it display that message when the check fails?
> 
> -Ben L.

Ben,

You need to use flash messages in your views:  
[http://rubyonrails.org/api/classes/ActionController/Flash.html](http://rubyonrails.org/api/classes/ActionController/Flash.html)

- Jean-Etienne

---

<div class="post-metadata">

**Author:** ![blewis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/c57346/32.png) [@blewis](https://www.ruby-forum.com/u/blewis)\
**Post date:** [July 20, 2006, 11:40am UTC](https://www.ruby-forum.com/t/how-do-you-use-message-with-validation/99114/3 "2006-07-20T11:40:06Z")

</div>

Carl-Johan K. wrote:

> Check the API for ActiveRecord::Errors and error\_messages\_for.

I am… all i can find is @user.errors.full\_messages… but I want to  
display each error with formatting.

---

<div class="post-metadata">

**Author:** ![blewis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/c57346/32.png) [@blewis](https://www.ruby-forum.com/u/blewis)\
**Post date:** [July 20, 2006, 11:36am UTC](https://www.ruby-forum.com/t/how-do-you-use-message-with-validation/99114/4 "2006-07-20T11:36:11Z")

</div>

Check the API for ActiveRecord::Errors and error\_messages\_for.

---

<div class="post-metadata">

**Author:** ![blewis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/c57346/32.png) [@blewis](https://www.ruby-forum.com/u/blewis)\
**Post date:** [July 20, 2006, 11:42am UTC](https://www.ruby-forum.com/t/how-do-you-use-message-with-validation/99114/5 "2006-07-20T11:42:37Z")

</div>

Jean-etienne Durand wrote:

> Ben L. wrote:
> 
> > If I do validates\_uniqueness\_of :name, :message =\> “It’s not  
> > uniqueeee!!!”
> > 
> > then how do I have it display that message when the check fails?
> > 
> > -Ben L.
> 
> Ben,
> 
> You need to use flash messages in your views:  
> [http://rubyonrails.org/api/classes/ActionController/Flash.html](http://rubyonrails.org/api/classes/ActionController/Flash.html)
> 
> - Jean-Etienne

That’s a part of it, yes. That’s how I’ll display the message… but  
I’m referring to the parameter :message in a validates\_uniqueness\_of  
line. How do I access that after the test fails?

---

<div class="post-metadata">

**Author:** ![blewis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/c57346/32.png) [@blewis](https://www.ruby-forum.com/u/blewis)\
**Post date:** [July 20, 2006, 11:42am UTC](https://www.ruby-forum.com/t/how-do-you-use-message-with-validation/99114/6 "2006-07-20T11:42:53Z")

</div>

\<%= error\_messages\_for(‘my\_model’) %\> in your view.

Some css style examples:  
154 /\* error  
155 ---- \*/  
156 .fieldWithErrors {  
157 padding: 1px;  
158 background-color: red;  
159 display: table;  
160 }  
161 #errorExplanation {  
162 border: 2px solid red;  
163 padding: 7px;  
164 padding-bottom: 12px;  
165 margin-bottom: 10px;  
166 background-color: #f0f0f0;  
167 }  
168 #errorExplanation h2 {  
169 text-align: left;  
170 font-weight: bold;  
171 padding: 5px 5px 5px 15px;  
172 margin: -7px;  
173 background-color: #c00;  
174 color: #fff;  
175 }  
176 #errorExplanation p {  
177 color: #333;  
178 margin-bottom: 0;  
179 padding: 5px;  
180 }  
181 #errorExplanation ul li {  
182 list-style: square;  
183 }

---

<div class="post-metadata">

**Author:** ![blewis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/c57346/32.png) [@blewis](https://www.ruby-forum.com/u/blewis)\
**Post date:** [July 20, 2006, 12:51pm UTC](https://www.ruby-forum.com/t/how-do-you-use-message-with-validation/99114/7 "2006-07-20T12:51:44Z")

</div>

On 7/20/06, Ben L. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > 159 display: table;  
> > 170 font-weight: bold;  
> > 181 #errorExplanation ul li {  
> > for i in (removed\_email\_address@domain.invalid-1)  
> > flash[:notice] += “  
> > ” + @messages[i]  
> > end
> 
> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).
> 
> * * *
> 
> Rails mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)

You can use the errors.on(:field) if you want to get the message for a  
field. Or even just errors[:field]

As for you example code is there a reason why you couldn’t just use  
something like

flash[:notice] = @user.errors.full\_messages.join(“  
”)

The error\_messages\_for will provide you with a display in your view of  
all  
these messages, and there is a post from Jean-etienne Durand with an  
example  
style.

If you don’t want to display some of the portions of what is returned  
from  
error\_messages\_for why not control it with CSS. eg

errorExplaination h2 { display:none; }  
errorExplaination p { display:none; }

Just my 2c

---

<div class="post-metadata">

**Author:** ![blewis](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/c57346/32.png) [@blewis](https://www.ruby-forum.com/u/blewis)\
**Post date:** [July 20, 2006, 12:08pm UTC](https://www.ruby-forum.com/t/how-do-you-use-message-with-validation/99114/8 "2006-07-20T12:08:49Z")

</div>

Jean-etienne Durand wrote:

> \<%= error\_messages\_for(‘my\_model’) %\> in your view.
> 
> Some css style examples:  
> 154 /\* error  
> 155 ---- \*/  
> 156 .fieldWithErrors {  
> 157 padding: 1px;  
> 158 background-color: red;  
> 159 display: table;  
> 160 }  
> 161 #errorExplanation {  
> 162 border: 2px solid red;  
> 163 padding: 7px;  
> 164 padding-bottom: 12px;  
> 165 margin-bottom: 10px;  
> 166 background-color: #f0f0f0;  
> 167 }  
> 168 #errorExplanation h2 {  
> 169 text-align: left;  
> 170 font-weight: bold;  
> 171 padding: 5px 5px 5px 15px;  
> 172 margin: -7px;  
> 173 background-color: #c00;  
> 174 color: #fff;  
> 175 }  
> 176 #errorExplanation p {  
> 177 color: #333;  
> 178 margin-bottom: 0;  
> 179 padding: 5px;  
> 180 }  
> 181 #errorExplanation ul li {  
> 182 list-style: square;  
> 183 }

thanks - I’m afraid I wasn’t specific enough. Wanted the error message  
in my controller, not the view.

here’s how I did it

```
  @messages = @user.errors.full_messages
  flash[:notice] = @messages[0]
  for i in (removed_email_address@domain.invalid-1)
    flash[:notice] += "<br>" + @messages[i]
  end
```
