Add `weekday_options_for_select` method by DRBragg · Pull Request #42979 · rails...
source link: https://github.com/rails/rails/pull/42979
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Summary
In a majority of the Rails apps I've built I've had to add my own helpers for a weekday select. Given how great Rails is at providing most of the helpers you could ever want, this omission has always been a little surprising to me. Since I just had to work on this again, and another dev shared my surprise at the omission, I thought it was time for a Rails PR.
This PR adds 2 new FormOptionHelper
methods, a FormBuilder
method, and a new Tags::WeekdaySelect
class.
weekday_options_for_select # => "<option value=\"Sunday\">Sunday</option>\n<option value=\"Monday\">Monday</option>\n # <option value=\"Tuesday\">Tuesday</option>\n<option value=\"Wednesday\">Wednesday</option>\n # <option value=\"Thursday\">Thursday</option>\n<option value=\"Friday\">Friday</option>\n # <option value=\"Saturday\">Saturday</option>"
In addition to accepting a selected
value, weekday_options_for_select
can have 2 options, :index_as_value
and/or :day_format
.
weekday_options_for_select(nil, day_format: :abbr_day_names) # => "<option value=\"Sun\">Sun</option>\n<option value=\"Mon\">Mon</option>\n # <option value=\"Tue\">Tue</option>\n<option value=\"Wed\">Wed</option>\n # <option value=\"Thu\">Thu</option>\n<option value=\"Fri\">Fri</option>\n # <option value=\"Sat\">Sat</option>" weekday_options_for_select(nil, index_as_value: true) # => "<option value=\"0\">Sunday</option>\n<option value=\"1\">Monday</option>\n # <option value=\"2\">Tuesday</option>\n<option value=\"3\">Wednesday</option>\n # <option value=\"4\">Thursday</option>\n<option value=\"5\">Friday</option>\n # <option value=\"6\">Saturday</option>"
weekday_options_for_select
is really just a helper method for:
weekday_select(:model, :weekday) # => "<select name=\"model[weekday]\" id=\"model_weekday\"><option value=\"Sunday\">Sunday</option>\n # <option value=\"Monday\">Monday</option>\n<option value=\"Tuesday\">Tuesday</option>\n # <option value=\"Wednesday\">Wednesday</option>\n<option value=\"Thursday\">Thursday</option>\n # <option value=\"Friday\">Friday</option>\n<option value=\"Saturday\">Saturday</option></select>"
weekday_select
is also used in the FormBuilder
so can use it like this:
<%= form_for @digest do |f| %> <%= f.weekday_select :weekday %> <%= f.submit %> <% end %>
to produce the following HTML:
<select name="digest[weekday]" id="digest_weekday"> <option value="Sunday">Sunday</option> <option value="Monday">Monday</option> <option value="Tuesday">Tuesday</option> <option value="Wednesday">Wednesday</option> <option value="Thursday">Thursday</option> <option value="Friday">Friday</option> <option value="Saturday">Saturday</option> </select>
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK