diff options
| author | mo khan <mo@mokhan.ca> | 2016-05-28 08:38:43 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2016-05-28 08:38:43 -0600 |
| commit | 8be0dbbbafecb2065b2dbbb161dd6f31fe51ceb8 (patch) | |
| tree | 3911765c72e06fe7401735f009985a8888e293d7 /app | |
| parent | cd79878b91a6b2bffde89cf34774b62a0e4dbc62 (diff) | |
update gyms#create to create a gym using the yelp id.
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/gyms_controller.rb | 16 | ||||
| -rw-r--r-- | app/controllers/profiles_controller.rb | 9 | ||||
| -rw-r--r-- | app/models/gym.rb | 2 | ||||
| -rw-r--r-- | app/models/profile.rb | 1 | ||||
| -rw-r--r-- | app/views/gyms/_gym.jbuilder | 5 | ||||
| -rw-r--r-- | app/views/gyms/create.json.jbuilder | 3 | ||||
| -rw-r--r-- | app/views/gyms/index.json.jbuilder | 8 | ||||
| -rw-r--r-- | app/views/profiles/edit.html.erb | 4 |
8 files changed, 29 insertions, 19 deletions
diff --git a/app/controllers/gyms_controller.rb b/app/controllers/gyms_controller.rb index ddb74d2..b5da8c8 100644 --- a/app/controllers/gyms_controller.rb +++ b/app/controllers/gyms_controller.rb @@ -21,9 +21,13 @@ class GymsController < ApplicationController end def create - @gym = Gym.new(secure_params) + @gym = build_gym + if @gym.save - redirect_to gyms_path(q: @gym.name) + respond_to do |format| + format.html { redirect_to gyms_path(q: @gym.name) } + format.js { render @gym } + end else flash[:error] = @gym.errors.full_messages render :new @@ -39,4 +43,12 @@ class GymsController < ApplicationController location_attributes: [:address, :city, :region, :country, :postal_code] ) end + + def build_gym + if params[:yelp_id].present? + @gym = Gym.create_from_yelp!(params[:yelp_id]) + else + @gym = Gym.new(secure_params) + end + end end diff --git a/app/controllers/profiles_controller.rb b/app/controllers/profiles_controller.rb index e56a45a..687962d 100644 --- a/app/controllers/profiles_controller.rb +++ b/app/controllers/profiles_controller.rb @@ -12,12 +12,7 @@ class ProfilesController < ApplicationController def update profile = current_user.profile - ActiveRecord::Base.transaction do - if params[:home_gym_yelp_id].present? - profile.gym = Gym.create_from_yelp!(params[:home_gym_yelp_id]) - end - profile.update(profile_params) - end + profile.update(profile_params) flash[:notice] = t("profiles.edit.profile_update_success") redirect_to profile_path(profile) end @@ -25,6 +20,6 @@ class ProfilesController < ApplicationController private def profile_params - params.require(:profile).permit(:gender, :social_tolerance, :time_zone) + params.require(:profile).permit(:gender, :social_tolerance, :time_zone, :gym_id) end end diff --git a/app/models/gym.rb b/app/models/gym.rb index e0e998c..f484e23 100644 --- a/app/models/gym.rb +++ b/app/models/gym.rb @@ -65,7 +65,7 @@ class Gym < ActiveRecord::Base end def self.create_from_yelp!(id) - Gym.find_by(yelp_id: id) || Gym.map_from(::Yelp.client.business(id).business).save! + Gym.find_by(yelp_id: id) || Gym.map_from(::Yelp.client.business(id).business) end def self.import(city, pages: 5) diff --git a/app/models/profile.rb b/app/models/profile.rb index ed4681d..ccab7c4 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -3,7 +3,6 @@ class Profile < ActiveRecord::Base belongs_to :gym enum social_tolerance: { low: 0, medium: 1, high: 2 } enum gender: { female: 0, male: 1, transgender: 2, other: nil } - attr_accessor :home_gym def to_param user.username diff --git a/app/views/gyms/_gym.jbuilder b/app/views/gyms/_gym.jbuilder new file mode 100644 index 0000000..61f5127 --- /dev/null +++ b/app/views/gyms/_gym.jbuilder @@ -0,0 +1,5 @@ +json.yelp_id gym.yelp_id +json.name gym.name +json.full_address gym.full_address +json.latitude gym.location.latitude +json.longitude gym.location.longitude diff --git a/app/views/gyms/create.json.jbuilder b/app/views/gyms/create.json.jbuilder new file mode 100644 index 0000000..7adc17a --- /dev/null +++ b/app/views/gyms/create.json.jbuilder @@ -0,0 +1,3 @@ +json.gym do + json.partial! 'gym', gym: @gym +end diff --git a/app/views/gyms/index.json.jbuilder b/app/views/gyms/index.json.jbuilder index ed542d7..c73bfb2 100644 --- a/app/views/gyms/index.json.jbuilder +++ b/app/views/gyms/index.json.jbuilder @@ -1,7 +1,3 @@ -json.array! @gyms do |gym| - json.yelp_id gym.yelp_id - json.name gym.name - json.full_address gym.full_address - json.latitude gym.location.latitude - json.longitude gym.location.longitude +json.gyms @gyms do |gym| + json.partial! 'gym', gym: gym end diff --git a/app/views/profiles/edit.html.erb b/app/views/profiles/edit.html.erb index 0ec12ac..47eee14 100644 --- a/app/views/profiles/edit.html.erb +++ b/app/views/profiles/edit.html.erb @@ -23,8 +23,8 @@ </fieldset> <fieldset> <legend><%= Profile.human_attribute_name(:home_gym) %></legend> - <p id="home_gym_name"><%= @profile.home_gym %></p> - <%= hidden_field_tag(:home_gym_yelp_id) %> + <p id="home_gym_name"><%= @profile.gym.try(:name) %></p> + <%= f.hidden_field(:gym_id) %> <a href="#" data-reveal-id="homeGymModal">Choose Home Gym</a> </fieldset> <%= f.submit t(".save"), class: "button" %> |
