2014-12-04 2 views
0

작성 방법에서이 이중 렌더링 오류를 이해할 수 없습니다.생성시 이중 렌더링 오류

문제는 Create Method의 객체가 다형성 클래스 (Commentary - Commentable)를 가지고 있기 때문에 Create Method가 특정 객체가 아닌 객체로 리디렉션해야한다는 점입니다.

해설을 작성하여 오브젝트 (약속, 사람 등)에 연결하고 해설 색인이 아닌 오브젝트 (redirect_to @objeto)로 리디렉션하고 싶습니다. 어떻게해야합니까?

코드 (comentarios_controller.rb)는 기본적으로 없습니다 : 레일을 사용하여

def create 

    #Verifica o objeto 
    @objeto = nil 
    tipo = params[:comentable_type] 
    case tipo 
     when "Comercial::Oportunidade" 
      @objeto = Comercial::Oportunidade.find_by_id(params[:comentable_id]) 
     when "Comercial::Compromisso" 
      @objeto = Comercial::Compromisso.find_by_id(params[:comentable_id]) 
    end 

    @comentario=Comercial::Comentario.new(params[:comercial_comentario]) 
    @comentario.organizacoes<<current_empresa 
    @comentario.usuario = current_usuario 

    create! do |success, failure| 
    if success 
    @objeto.comentarios << @comentario 
    flash[:success] = I18n.t 'activerecord.successful.messages.created.m', :model => @comentario.class.model_name.human 
    redirect_to @objeto 
    else 
    flash.discard 
    end 
end 
end 

3.2.2

+0

어디서 코드를 만들 수 있습니까! ? –

+0

InheritedResources (https://github.com/josevalim/inherited_resources)에서 가져옵니다. – Laerte

답변

1

내가 상속 자원 정말 익숙하지 해요 (그리고 내가 볼 저자는 더 이상 권장하는 그 사용)하지만 여기에서는 올바르게 사용하지 않는 것으로 보입니다. 이 부울하지, 그리고 아마도 그것은 여기에 그림과 같은 블록을 기대 - 그것은 failure 매개 변수를 사용하여

class ProjectsController < InheritedResources::Base 
    def update 
    update! do |success, failure| 
     failure.html { redirect_to project_url(@project) } 
    end 
    end 
end 

참고하는 방식 것을 : 사용량에 가장 유사한 주어진 예는 다음과 같다 : { redirect_to ... }. 그래서 나는이 부분을 다음과 같이 재 작성해야한다고 생각합니다 :

create! do |success, failure| 
    success.html { 
    @objeto.comentarios << @comentario 
    flash[:success] = I18n.t 'activerecord.successful.messages.created.m', :model => @comentario.class.model_name.human 
    redirect_to @objeto 
    } 
    failure.html { flash.discard } 
end 
+0

완벽하게 작동했습니다! – Laerte

+1

쿨! 그것을 듣고 기쁘다 일했다. –