2010-04-06 3 views
1

Google 검색을 수행하고 몇 시간 동안 내 머리를 아프게 한 후에 마침내이 질문을 게시하기로 결정했습니다. 거기에 action2.rjs 차기 HTML 페이지를 표시해야합니다 대신에 내가 무엇입니까 때 다음 장소에Rails RJS 템플릿이 html 페이지 대신 코드를 표시합니다.

그 코드와
view1.html.erb 
-------------- 
<%=link_to_remote_redbox "Link", :url => {:action => :action1, :id => @some.id} 

some_controller.rb 
------------------ 
def action1 
    render :layout => false 
end 

def action2 
    do some processing 
end 


action1.html.erb 
-------------------- 
<form onsubmit="new Ajax.Request('/some_controller/action2', {asynchronous:true, evalScripts:true, onComplete:function(request){RedBox.close(); return false;}, parameters:Form.serialize(this)}); return false;}" method="post" action="/some_controller/action2"> 
<input type=text name='username'> 
<input type='submit' value='submit'> 
</form> 

action2.rjs 
----------- 
page.replace_html("some_div", (render(:partial => "some_partial"))) 

... 코드의이

내가 읽은 다른 게시물에 제안으로
Element.update("some_div", "<style type=\"text/css\">\n\n.............. 

, 그들은 link_to_remote_redbox 함수에서 ": update => some_div"때문에 발생한다고 말하지만 코드에는 분명히 없습니다.

도움말은 언제나 감사하겠습니다. 많은 분들께 감사드립니다.

답변

0

레이아웃에 기본 자바 스크립트 파일이 포함되어 있는지 확인하십시오. 즉 :

+0

안녕하세요. 네, 레이아웃은 기본 자바 스크립트 인 –

+0

@ graza를 모두로드합니다. 뭔가 시도해 볼 것을 제안하는 경우에는 주석이어야합니다. 코드 붙여 넣기에 버그가없는 경우 어둠 속에서 촬영하는 대신 자세한 내용을 먼저 묻습니다. –

0

봅니다 다음 -

def action2 
    render :update do|page| 
    page.replace_html, 'some_div', :partial => 'some_partial' 
    end 
end 

또는

<form onsubmit="new Ajax.Request('', {asynchronous:true, evalScripts:true, onComplete:function(request){RedBox.close(); return false;}, parameters:Form.serialize(this)}); return false;}" method="post" action="/some_controller/action2"> 
0

살릴의 방법은 당신이 당신의 브라우저에서 아약스 응답 전화를 호출 할 경우 작동 ...하지만 경우 것 당신은 더 복잡한 자바 스크립트 (귀하의 컨트롤러에서 지저분해질 수 있음)를 호출하고 싶다면 다음과 같이 대신 할 수 있습니다 :

def action2 
    ...some code 
    respond_to do |format| 
    format.js 
    end 
end 

이것은 html이 아닌 javascript를 반환하도록 레일스에 명시 적으로 지시합니다. RJS 대신 jQuery를 사용하는 경우에도 유용합니다.

건배!