2010-12-14 3 views
2

내 컨트롤러에서 사용자에게 모달 창 (jquery UI 대화 상자 사용)을 표시하려고합니다. 예를 들어컨트롤러에서 모달 시작

: 당신의 도움에 대한

def create 
    if params[:id] 
    #do something 
    else 
    #show a modal window with a partial as content 
end 

들으 =)

+0

제출 또는 자바 스크립트 메소드로 작성 액션을 호출하는 방법 – shingara

+0

제출을 사용합니다. – Flyingbeaver

+0

이렇게 하시겠습니까?'@valid_attributes 그러면 저장하고 리디렉션하고 다른 것을 렌더링하고 모달 폼을 표시합니다 .' ?? – Rohit

답변

1

이것은 수정이지만, 아마 당신의 새로운 당신

컨트롤러

def create 
    if params[:id] 
    #true code 
    else 
    render :new 
    @dialog = true 
    end  
end 

을 위해 작동합니다 .html.erb

<% if @dialog %> 
    <%= #dialog code %> 
<% else %> 
    <%= #normal code %> 
<% end %> 

희망 사항.

UPDATE

올바른 내가 코멘트에서 당신을 물었다 당신은이

을 할 수있는 경우 new.html.erb 당신이

<% form_for @product do |f| %> 
    <% if @product.errors %> 
    <%= #dialog code %> 
    <% end %> 
<% end %> 
+0

안녕하세요, thx 답변입니다. 이미이 솔루션을 찾았지만 좀 더 우아한 접근 방법을 찾고 싶었습니다. – Flyingbeaver

0

당신은 jQuery를 표시 할 수 없습니다 할 수 서버 측에서 JavaScript를 실행할 수 없기 때문에 컨트롤러에서 대화 상자를 열 수 있습니다. 가장 가까운 것은 클라이언트 측에서 평가할 JavaScript 문자열을 되돌려 보내는 것입니다. 그러나 이것은 매우 나쁜 습관입니다. 최선의 방법은 서버 측에서 무언가를 사용하여 클라이언트 측에서 대화 코드를 작성하는 것입니다. erb 템플릿에 많은 자바 스크립트가 필요하지 않다면 거기에서 함수를 호출하거나 AJAX를 통해 제출하고 핸들러에서 대화 상자를 수행하거나 렌더링 할 수있는 js.erb 템플릿을 렌더링 할 수 있습니다 자바 스크립트를 사용합니다. 위의 예를 원한다면 알려주십시오. 제가 제공 할 수 있는지 알아 보겠습니다.

+0

글쎄, 내가 가장 깨끗한 방법, 그리고 DRYest 방법을보고 관심이 있어요 :) – Flyingbeaver

관련 문제