2011-02-18 2 views
0

다른 사람들의 게시물을 읽었으며, 현재 갖고있는 문제를 감싸고 있습니다. 그래서 내가 물어볼 줄 알았다.하나의 컨트롤러에 모델 전송을위한 오류 메시지가 표시되지 않습니다. 다른 레일즈 2.3.2와 함께 표시됩니다.

아바타 업로드를위한 양식이 있습니다. 컨트롤러 => '보드': 이 양식에서 표시되는 동작 => '쇼'

<% form_tag("avatar/upload", :multipart => true) do %> 
    <%= error_messages_for :avatar %> 
    ... 

이 잘 작동합니다. 문제는 표시 할 오류 메시지를 가져올 수 없다는 것입니다. 컨트롤러 => '아바타':

업로드에 의해 처리되는 행동 => '업로드'

if params_posted?(:avatar) 
    image = get_image(params) 
    @board = Board.find(session[:board_id]) 
    @avatar = Avatar.new(@board.id, image) 
    if @avatar.save 
    # ??? 
    end 
end 

지금이 내가에 문제가있는 부분이다. 나는 내가 redirect_to를 할 수 없다는 것을 알고있다. 그렇지 않으면 error_messages_for @avatar를 잃어 버려서 오류 메시지가 나타나지 않지만 렌더링을하는 것은 문제가된다. 내 routes.rb에서

나는 다음과 같은 한 :

map.connect 'board/celebrating/:id/:name', :controller => 'board', :action => 'show' 

을 그래서 내가 알고 싶은 것을 다시에있는 보드 표시하는 방법입니다 : 컨트롤러 => '보드'활동 => '공연 @avatar에 대한 오류 메시지를 표시 하시겠습니까?

죄송합니다. 나에게 그것은 투쟁이었다. 미리 감사드립니다.

미첼은

답변

0

당신은 템플릿을 렌더링 대신 리디렉션 또는 작업을 렌더링함으로써 그것을 할 수 있습니다. 그래서,

if params_posted?(:avatar) 
    image = get_image(params) 
    @board = Board.find(session[:board_id]) 
    @avatar = Avatar.new(@board.id, image) 
    if @avatar.save 
    ... 
    else 
    render :template => 'boards/show' 
    end 
end 

가 BoardsController # 쇼 조치가 실행되지 않습니다 명심 플래시를 : 당신이 실패 보드/show.html.erb 렌더링하려는 경우 예를 들어, 다음 할 것 메시지 및 인스턴스 변수 (@avatar, @board)는 보존됩니다.

관련 문제