fix resource loading for new action
This commit is contained in:
parent
aaed265c91
commit
7b299b50fc
|
@ -17,10 +17,12 @@ module CanCan
|
||||||
end
|
end
|
||||||
|
|
||||||
def load_resource # TODO this could use some refactoring
|
def load_resource # TODO this could use some refactoring
|
||||||
if params[:id]
|
unless params[:action] == "index"
|
||||||
instance_variable_set("@#{params[:controller].singularize}", params[:controller].singularize.camelcase.constantize.find(params[:id]))
|
if params[:id]
|
||||||
elsif params[params[:controller].singularize.to_sym]
|
instance_variable_set("@#{params[:controller].singularize}", params[:controller].singularize.camelcase.constantize.find(params[:id]))
|
||||||
instance_variable_set("@#{params[:controller].singularize}", params[:controller].singularize.camelcase.constantize.new(params[params[:controller].singularize.to_sym]))
|
else
|
||||||
|
instance_variable_set("@#{params[:controller].singularize}", params[:controller].singularize.camelcase.constantize.new(params[params[:controller].singularize.to_sym]))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,14 @@ describe CanCan::ControllerAdditions do
|
||||||
@controller.instance_variable_get(:@ability).should == :some_resource
|
@controller.instance_variable_get(:@ability).should == :some_resource
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should not build a resource of neither id nor attributes are specified" do
|
it "should build a new resource even if attribute hash isn't specified" do
|
||||||
|
stub(@controller).params { {:controller => "abilities", :action => "new"} }
|
||||||
|
stub(Ability).new(nil) { :some_resource }
|
||||||
|
@controller.load_resource
|
||||||
|
@controller.instance_variable_get(:@ability).should == :some_resource
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should not build a resource when on index action" do
|
||||||
stub(@controller).params { {:controller => "abilities", :action => "index"} }
|
stub(@controller).params { {:controller => "abilities", :action => "index"} }
|
||||||
@controller.load_resource
|
@controller.load_resource
|
||||||
@controller.instance_variable_get(:@ability).should be_nil
|
@controller.instance_variable_get(:@ability).should be_nil
|
||||||
|
|
Loading…
Reference in New Issue
Block a user