Added a back_url field to the Rate for that will store the redirect path.

* Used in the User Administration panel so RatesController can redirect back to
  the panel as needed.

  #1914
This commit is contained in:
Eric Davis
2009-01-19 11:32:27 -08:00
parent cc063768b6
commit 22ec6f56b7
4 changed files with 21 additions and 1 deletions
+12 -1
View File
@@ -2,6 +2,7 @@ class RatesController < ApplicationController
helper :users
before_filter :require_admin
before_filter :require_user_id, :only => [:index, :new]
before_filter :set_back_url, :only => [:new, :edit]
# GET /rates?user_id=1
# GET /rates.xml?user_id=1
@@ -49,7 +50,13 @@ class RatesController < ApplicationController
respond_to do |format|
if @rate.save
flash[:notice] = 'Rate was successfully created.'
format.html { redirect_to(rates_url(:user_id => @rate.user_id)) }
format.html {
if params[:back_url] && !params[:back_url].blank?
redirect_to(params[:back_url])
else
redirect_to(rates_url(:user_id => @rate.user_id))
end
}
format.xml { render :xml => @rate, :status => :created, :location => @rate }
else
format.html { render :action => "new" }
@@ -100,4 +107,8 @@ class RatesController < ApplicationController
end
end
end
def set_back_url
@back_url = params[:back_url]
end
end
+1
View File
@@ -23,6 +23,7 @@
</td>
<td align="center">
<%= f.hidden_field "user_id" %>
<%= hidden_field_tag "back_url", @back_url %>
<%= submit_tag l(:button_add),:class => 'button-small' -%>
</td>
</tr>
+1
View File
@@ -1,6 +1,7 @@
<h1><%= l(:rate_label_new_rate) %></h1>
<% @rate = Rate.new(:user => @user ) %>
<% @back_url = url_for(:controller => 'users', :action => 'edit', :id => @user, :tab => 'rates') %>
<%= render :partial => 'rates/form' %>
<h1><%= l(:rate_label_rate_history) %></h1>
@@ -272,6 +272,13 @@ describe RatesController, "as an administrator" do
response.should redirect_to(rates_url(:user_id => @user.id))
end
it 'should redirect to the back_url if set' do
back_url = '/back_to_this_url'
Rate.stub!(:new).and_return(mock_rate(:save => true))
post :create, :rate => {}, :back_url => back_url
response.should redirect_to(back_url)
end
end
describe "with invalid params" do