Commit 2a54c51

mo khan <mo@mokhan.ca>
2015-11-15 19:52:54
dynamically build edit form fields.
1 parent 280a294
Changed files (3)
app
models
views
config
locales
app/models/profile.rb
@@ -1,7 +1,7 @@
 class Profile < ActiveRecord::Base
   belongs_to :user
   enum social_tolerance: { low: 0, medium: 1, high: 2 }
-  enum gender: { other: nil,  male: 1, female: 0, transgender: 2 }
+  enum gender: { female: 0, male: 1, transgender: 2, other: nil }
 
   def to_param
     user.username
app/views/profiles/edit.html.erb
@@ -4,22 +4,18 @@
     <h1><%= @current_user.username %></h1>
     <%= form_for(@profile) do |f| %>
       <fieldset>
-        <legend><%= t(".gender.gender") %></legend>
-        <%= f.radio_button(:gender, "female") %>
-        <%= f.label(:gender_female, t(".gender.female")) %>
-        <%= f.radio_button(:gender, "male") %>
-        <%= f.label(:gender_male, t(".gender.male")) %>
-        <%= f.radio_button(:gender, "other") %>
-        <%= f.label(:gender_other, t(".gender.other")) %>
+        <legend><%= t(".gender.title") %></legend>
+        <% Profile.genders.keys.each do |gender| %>
+          <%= f.radio_button(:gender, gender) %>
+          <%= f.label("gender_#{gender}", t(".gender.#{gender}")) %>
+        <% end %>
       </fieldset>
       <fieldset>
-        <legend><%= t(".social_tolerance.social_tolerance") %></legend>
-        <%= f.radio_button(:social_tolerance, "low") %>
-        <%= f.label(:social_tolerance_low, t(".social_tolerance.low")) %>
-        <%= f.radio_button(:social_tolerance, "medium") %>
-        <%= f.label(:social_tolerance_medium, t(".social_tolerance.medium")) %>
-        <%= f.radio_button(:social_tolerance, "high") %>
-        <%= f.label(:social_tolerance_high, t(".social_tolerance.high")) %>
+        <legend><%= t(".social_tolerance.title") %></legend>
+        <% Profile.social_tolerances.keys.each do |social_tolerance| %>
+          <%= f.radio_button(:social_tolerance, social_tolerance) %>
+          <%= f.label("social_tolerance_#{social_tolerance}", t(".social_tolerance.#{social_tolerance}")) %>
+        <% end %>
       </fieldset>
       <%= f.submit t(".save"), class: "button"  %>
     <% end %>
config/locales/en.yml
@@ -43,15 +43,16 @@ en:
   profiles:
     edit:
       gender:
-        gender: Gender
+        title: Gender
         female: Female
         male: Male
+        transgender: Transgender
         other: Other
       social_tolerance:
         low: Low
         medium: Medium
         high: High
-        social_tolerance: Social Tolerance
+        title: Social Tolerance
       save: Save Profile
       profile_update_success: "Profile updated. This is how your public profile appears."
     show: