diff --git a/app/controllers/profiles_controller.rb b/app/controllers/profiles_controller.rb index 25aa1f3bb..a7b10d7c6 100644 --- a/app/controllers/profiles_controller.rb +++ b/app/controllers/profiles_controller.rb @@ -20,7 +20,15 @@ class ProfilesController < ApplicationController def update # upload and set new profile photo params[:profile] ||= {} - params[:tags] << params[:profile][:tag_string] unless params[:profile][:tag_string].nil? + unless params[:profile][:tag_string].nil? + params[:profile][:tag_string].split( " " ).each do |extra_tag| + extra_tag.strip! + unless extra_tag == "" + extra_tag = "##{extra_tag}" unless extra_tag.start_with?( "#" ) + params[:tags] += " #{extra_tag}" + end + end + end params[:profile][:tag_string] = (params[:tags]) ? params[:tags].gsub(',',' ') : "" params[:profile][:searchable] ||= false params[:profile][:photo] = Photo.where(:author_id => current_user.person.id, diff --git a/spec/controllers/profiles_controller_spec.rb b/spec/controllers/profiles_controller_spec.rb index 4d760e3f8..4f40af60c 100644 --- a/spec/controllers/profiles_controller_spec.rb +++ b/spec/controllers/profiles_controller_spec.rb @@ -59,6 +59,15 @@ describe ProfilesController do @user.person(true).profile.tag_list.to_set.should == ['apples', 'oranges', 'pears'].to_set end + it 'sets plaintext tags without #' do + params = { :id => @user.person.id, + :tags => ',#apples,#oranges,', + :profile => {:tag_string => 'bananas'} } + + put :update, params + @user.person(true).profile.tag_list.to_set.should == ['apples', 'oranges', 'bananas'].to_set + end + context 'with a profile photo set' do before do @params = { :id => @user.person.id,