Commit f661d43a20539d1db6c81b1c01aedd87f2edaeec
1 parent
0b8c2b19
Exists in
staging
and in
42 other branches
ActionItem836: not asking for target when coming with target_id as argument
Showing
3 changed files
with
22 additions
and
3 deletions
Show diff stats
app/controllers/my_profile/tasks_controller.rb
@@ -23,9 +23,10 @@ class TasksController < MyProfileController | @@ -23,9 +23,10 @@ class TasksController < MyProfileController | ||
23 | end | 23 | end |
24 | 24 | ||
25 | def new | 25 | def new |
26 | - target = profile.friends.find_by_id(params[:ticket][:target_id]) if params[:ticket] | ||
27 | @ticket = Ticket.new(params[:ticket]) | 26 | @ticket = Ticket.new(params[:ticket]) |
28 | - @ticket.target = target | 27 | + if params[:target_id] |
28 | + @ticket.target = profile.friends.find(params[:target_id]) | ||
29 | + end | ||
29 | @ticket.requestor = profile | 30 | @ticket.requestor = profile |
30 | if request.post? | 31 | if request.post? |
31 | if @ticket.save | 32 | if @ticket.save |
app/views/tasks/new.rhtml
@@ -2,7 +2,11 @@ | @@ -2,7 +2,11 @@ | ||
2 | 2 | ||
3 | <%# FIXME: put style in css %> | 3 | <%# FIXME: put style in css %> |
4 | <% labelled_form_for :ticket, @ticket do |f| %> | 4 | <% labelled_form_for :ticket, @ticket do |f| %> |
5 | - <%= display_form_field( _('To: '), f.select(:target_id, profile.friends.map{|p|[p.name, p.id]})) unless @ticket.target %> | 5 | + <% if @ticket.target %> |
6 | + <%= f.hidden_field :target_id %> | ||
7 | + <% else %> | ||
8 | + <%= display_form_field( _('To: '), f.select(:target_id, profile.friends.map{|p|[p.name, p.id]})) %> | ||
9 | + <% end %> | ||
6 | <%= f.text_field :title, :style => 'width:80%;' %> | 10 | <%= f.text_field :title, :style => 'width:80%;' %> |
7 | <%= f.text_area :description, :style => 'height:200px; width:80%;' %> | 11 | <%= f.text_area :description, :style => 'height:200px; width:80%;' %> |
8 | 12 |
test/functional/tasks_controller_test.rb
@@ -110,6 +110,20 @@ class TasksControllerTest < Test::Unit::TestCase | @@ -110,6 +110,20 @@ class TasksControllerTest < Test::Unit::TestCase | ||
110 | assert_template 'new' | 110 | assert_template 'new' |
111 | end | 111 | end |
112 | 112 | ||
113 | + should 'add a hidden field with target_id when informed in the URL' do | ||
114 | + friend = create_user('myfriend').person | ||
115 | + profile.add_friend(friend) | ||
116 | + | ||
117 | + get :new, :profile => profile.identifier, :target_id => friend.id.to_s | ||
118 | + | ||
119 | + assert_tag :tag => 'input', :attributes => { :type => 'hidden', :name => 'ticket[target_id]', :value => friend.id } | ||
120 | + end | ||
121 | + | ||
122 | + should 'select friend from list when not already informed' do | ||
123 | + get :new, :profile => profile.identifier | ||
124 | + assert_tag :tag => 'select', :attributes => { :name => 'ticket[target_id]' } | ||
125 | + end | ||
126 | + | ||
113 | should 'create a ticket' do | 127 | should 'create a ticket' do |
114 | assert_difference Ticket, :count do | 128 | assert_difference Ticket, :count do |
115 | post :new, :profile => profile.identifier, :ticket => {:title => 'test ticket'} | 129 | post :new, :profile => profile.identifier, :ticket => {:title => 'test ticket'} |