레일을 처음 사용하고 있으며 필자가 수행 한 튜토리얼에서 수행 한 작업에 동의합니다. 이 문제는 잘못된 양식 제출을 처리하는 방법과 관련이 있습니다.레일에서 유효하지 않은 양식 제출을 처리하는 올바른 방법
class ThingsController < ApplicationController
# POST /things
def create
@thing = Thing.new(params[:thing])
if @thing.save
flash[:notice] = 'Thing created'
redirect_to(@thing)
else
render :action => :new
end
end
을 thing.save 실패 @, 사용자가 무슨 일이 있었는지의 플래시와 함께 채워져 아웃 그가 방금 입력 한 값으로, 같은 양식이 제공되는 경우 : 일을의 표준 방법은 것 같다 잘못된. 지금까지 URL이/things/new에서 things /로 바뀌 었음을 제외하면 지금까지는 좋았습니다. 대신 인덱스보기를 렌더링 할 것으로 예상됩니다.
또한 사용자가 페이지를 새로 고치면 이제 색인보기를보고 있습니다. 그가 다시 클릭하면 항상 피하려고했던 양식을 다시 제출하라는 메시지가 표시됩니다. redirect_to (new_thing_path)를 지정하면 오류 메시지와 마찬가지로 사용자의 이전 제출이 손실됩니다.
나는 물건의 생성이/물건에 게시의 결과가되어야하므로이 방법이 "정확하다"는 것을 알지만 사용자 인터페이스와 관련하여 특별히 신경 쓰지 않습니다.
"수동으로"사용자 세션에 유효하지 않은 @thing 객체를 저장할 수 있습니다. 다시 말해 new_thing_path로 리디렉션 한 후 표시되지만 해킹처럼 느껴질 수 있습니다. 그저 그렇게하는 "길의 길"이 있어야하는 것처럼 보입니다.
아이디어가 있으십니까?
레일 코어에 대해 정확히 동일한 불만 사항이 있습니다. 그러나 제가 말한 것보다 더 잘 말했습니다 :) 좋은 질문입니다. – Andrew