2011-08-09 8 views
0

렌더링하지만 내가 기본적으로 할 노력하고있어 것은의 내용을 교체입니다 레일이 그런 짓을합니까? :레일 더블 나는이 유효한 코드가 아닙니다 알고

render "$('#dialog').replaceWith(#{render :action => 'new.html.erb'});" 

을하는 방법이있다 JS 대화 상자에서 render 'new.html.erb'을 호출 할 때 반환 할 내용을 반환합니다. @Devin M에 대한

편집 :

컨트롤러 액션 :

def new 
    @act = Act.new(:user_id => current_user.id) 
end 

def create 
    @act = Act.new(params[:act]) 
    if @act.valid? 
    @act.save 
    else 
    render :action => :new 
    end 
end 

new.js.erb :

$('#dialog').replaceWith("<%= escape_javascript(render(:action => 'new.html.erb')) %>"); 

전체 오류 :

Showing app/views/acts/new.js.erb where line #1 raised: undefined method `formats' for nil:NilClass 

답변

2

당신은 분할한다 이 코드는 컨트롤러에 포함 시키면 MVC의 아이디어에 위배됩니다.

respond_to do |format| 
    format.html { redirect_to @item } 
    format.js 
    end 

을 그리고 확장 파일 .js.erb과 같은 뷰를 만들 :

$('#dialog').replaceWith("<%= escape_javascript(render :partial => "new.html.erb", :locals => { :act => @act }) %>"); 

당신이 할 수있는 내가 수정하고 싶었 나는 액션이 ​​같은 일부 코드를 사용하여 JS 요청에 응답하기 위해 컨트롤러를 업데이트 할 액션에 대한 원격 링크를 사용하거나 자신의 UJS를 추가하여이 JS를 트리거하십시오.

+0

감사합니다. 나는 이것을 시도했지만 뷰 (new.js.erb)의 코드와 관련하여 다음과 같은 오류가 발생한다.'undefined method 'formats for'nil : NilClass'. 그것에 대한 단서가 있습니까? –

+0

컨트롤러를 게시하고 볼 수 있습니까? 뿐만 아니라 전체 오류. –

+0

완료. 원래 질문에 추가되었습니다. –

관련 문제