Hi, I''d like to display an input form with some mandatory fields (e.g. with an extra "*"). Some fields aren''t mandatory ( so they don''t get the "*"). How do I get the information about the field if there''s an "validate_presence_of" in the model or not in the view? TIA, Martin --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I am not totally sure how you would get an extra * but if you want to outline the field that is mandatory from a validates_presence_of filter then you need to make sure your form_for object is the same name as the model Example: Say you have a model like this: class User < ActiveRecord::Base validates_presence_of :username end Then your form_for object should be something like this: form_for :user, :url => users_path do |f| f.text_field :username end and when it fails it will be wrap with a div tag with a class name of "fieldWithErrors" and that would end up looking something like this: <div class="fieldWithErrors"><input id="user_username" name="user[username]" size="30" type="text" value="" /></div> then you can just outline it with css any color you want to indicate that the field is mandatory. the css would probably end up looking something like this: .fieldWithErrors>input[type="text"] { border:2px solid red; } that''s the way I do it... I have yet to use the "*" (asterisk) for my fields. On Mar 15, 4:09 pm, Martin <html-k...-Mmb7MZpHnFY@public.gmane.org> wrote:> Hi, > > I''d like to display an input form with some mandatory fields (e.g. with > an extra "*"). Some fields aren''t mandatory ( so they don''t get the "*"). > How do I get the information about the field if there''s an > "validate_presence_of" in the model or not in the view? > > TIA, > Martin--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Martin No wrote:> I''d like to display an input form with some mandatory fields (e.g. with > an extra "*"). Some fields aren''t mandatory ( so they don''t get the > "*"). > How do I get the information about the field if there''s an > "validate_presence_of" in the model or not in the view?You could do something like this: In your model: class MyModel < ActiveRecord::Base @@mandatory_fields = [ :field1, :field2] validates_presence_of *@@mandatory_fields def self.mandatory_fields ; @@mandatory_fields ; end Then in the view, for each field you can do something like: <%= ''*'' if MyModel.mandatory_fields.include? :this_field %> This field: <%= f.text_field :this_field %> For a reusable solution you could extend ActiveRecord::Base with something that does the equivalent and create a view helper to use it. Have a look here for something similar: http://www.ruby-forum.com/topic/146123 -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Hi Mark,> You could do something like this: > > In your model: > > class MyModel < ActiveRecord::Base > @@mandatory_fields = [ :field1, :field2] > validates_presence_of *@@mandatory_fields > def self.mandatory_fields ; @@mandatory_fields ; end > > Then in the view, for each field you can do something like: > > <%= ''*'' if MyModel.mandatory_fields.include? :this_field %> > This field: <%= f.text_field :this_field %> >that''s what I was looking for. Thanks.> For a reusable solution you could extend ActiveRecord::Base with > something that does the equivalent and create a view helper to use it. > Have a look here for something similar: > > http://www.ruby-forum.com/topic/146123Because I''m new to ruby (and rails) I''ll study it and may ask agains ;-) Thanks a lot, Martin --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---