Chip
Chip

Reputation: 1651

Rails simple_form attribute required mark (*)

I am using Simple Form in my app and I'd like to remove the * to indicate an attribute is required on all of my forms (existing and those yet to be created).

I have tried to set in simple_form.rb:

  # Whether attributes are required by default (or not). Default is true.
  config.required_by_default = false

And I've tried to modify simple_form.en.yml:

   required:
      text: 'required'
      mark: ''  # <------ tried setting this to blank.

I know I can set :required => false on each field, but I want to clean up the views & set it once.

Upvotes: 26

Views: 16218

Answers (4)

rafaelfranca
rafaelfranca

Reputation: 3285

Setting the simple_form.required.mask to '' should work if you restarted the server.

But you can remove it changing the the configuration:

# config.label_text = proc { |label, required| "#{required} #{label}" }

to

config.label_text = proc { |label, required| "#{label}" }

Upvotes: 43

rafaecheve
rafaecheve

Reputation: 1334

on Rails 4 just remove the "required" word

 config.label_text = lambda { |label, required, explicit_label| "#{required} #{label}" }

so it should be

config.label_text = lambda { |label, required, explicit_label| "#{} #{label}" }

Validation still works!

Upvotes: 6

alsotang
alsotang

Reputation: 1605

just

# Whether attributes are required by default (or not). Default is true. config.required_by_default = false

and restart your rails server. Then it works.

Upvotes: 0

AlexBrand
AlexBrand

Reputation: 12399

You can also do

simple_form_for @model, :defaults => {:required => false}

Upvotes: 20

Related Questions