ActionController의 새로운 respond_with
메소드 사용 ... 작업 (저장)이 성공할 때와 렌더링되지 않을 때 어떻게 렌더링할지 결정하는 방법은 무엇입니까?Rails 3의 respond_with에 대한 이해
내가 이해할 수 있도록하기 위해 (아래에 포함 된) 발판 생성 된 스팩을 얻으려고하기 때문에 물어 본다. 응용 프로그램은 정상적으로 작동하지만 이상하게도 유효성 검사가 실패하면 /carriers
(브라우저의 URL이 말하는 것 이상)이 렌더링 된 것으로 보입니다. 그러나이 사양은 "new"
이 될 것으로 예상됩니다 (그 문제는 제가 그렇습니다). 대신 <"">
을 받고 있습니다. 사양이 ""
일 것으로 예상되는 것으로 변경하면 여전히 실패합니다.
/carriers
을 렌더링하면 해당 페이지에서 유효성 검사에 실패한 필드 옆에 error_messages가 표시됩니다.
respond_with
에 익숙한 사람이라면 어떻게 될까요?
#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
사양 실패 사용자들은 :
이1) CarriersController POST create with invalid params re-renders the 'new' template
Failure/Error: response.should render_template("new")
expecting <"new"> but rendering with <"">.
Expected block to return true value.
# (eval):2:in `assert_block'
# ./spec/controllers/carriers_controller_spec.rb:81:in `block (4 levels) in <top (required)>'
반송파 컨트롤러의'# new' 및'# create' 작업에서 모두'Carrier.new'를 호출합니다. 나는'def create' 액션 메소드에서'Carrier.create (params [: carrier])'가되어야한다고 생각합니다. – Ernesto