KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Utilizing ActionController's new respond_with method...how does it determine what to render when action (save) is successful and when it's not? I ask because I'm trying to get a scaffold generated spec (included below) to pass, if only so that I can understand it. The app is working fine but, oddly, it appears to be rendering /carriers (at least that's what the browser's URL says) when a validation fails. Yet, the spec is expecting "new" (and so am I, for that matter) but instead is receiving <""> . If I change the spec to expect "" it still fails. When it renders /carriers that page shows the error_messages next to the fields that failed validation as one would expect. Can anyone familiar with respond_with see what's happening here? #carrier.rb validates :name, :presence => true #carriers_controller.rb class CarriersController < ApplicationController respond_to :html, :json ... def new respond_with(@carrier = Carrier.new) end def create @carrier = Carrier.new(params[:carrier]) flash[:success] = 'Carrier was successfully created.' if @carrier.save respond_with(@carrier) end Spec that's failing: #carriers_controller_spec.rb require 'spec_helper' describe CarriersController do def mock_carrier(stubs={}) (@mock_carrier ||= mock_model(Carrier).as_null_object).tap do |carrier| carrier.stub(stubs) unless stubs.empty? end end describe "POST create" do describe "with invalid params" do it "re-renders the 'new' template" do Carrier.stub(:new) { mock_carrier(:save => false) } post :create, :carrier => {} response.should render_template("new") end end end end with this error: 1) CarriersController POST create with invalid params re-renders the 'new' t
Tags (comma-separated)
Save Edits
Cancel