2009-11-05 2 views
2

나는이 문제에 대해 캠프를 할 때 내 웹 사이트에서 일하고있었습니다. 블로그에 100 개의 게시물이 있으며 한 번에 10 개씩 페이지가 표시됩니다. 1 월 15 일을 표시하고 링크를 표시합니다. 기본적으로 link_to_remote 태그를 사용하여 구현됩니다. 의 하단에 링크가RJS 및 link_to_remote 사용에 관한 질문

<%= link_to_remote "More Posts", :url => {:action => 'view' ,:id => link.to_i + 1} , :html => {:id => 'more-link'} %> 

내가 그 클릭하고 다음 15 개 게시물을 얻고,

page.insert_html :bottom, :puzzles , :partial => 'puzzles', :object => @puzzles 

이제 내가 원하는 insert_html을 통해 1 일 15 개 포스트를 포함하는 컨테이너에 추가입니다 페이지를 업데이트하여 사용자가 다음 번에 세 번째 일괄 처리를 클릭 할 때 등을 수행하도록합니다. 기본적으로 다음과 같습니다.

page.replace_html 'more-link', link_to_remote "More Posts", :url => {:action => 'view' ,:id => link.to_i + 1} , :html => {:id => 'more-link'} 

내가 할 수있는 단서가 있습니까?

답변

2

당신은 매우 가깝습니다.

replace_html은 (DOM_id, render에 대한 옵션) with with replace_html이 호출됩니다. 기본적으로 link_to_remote 호출의 출력을 렌더링하려고합니다. 그러나 렌더링을 사용할 수있는 형태로 전달하지는 않습니다. Barry Hess가 지적 하듯이 replace가 대체로이 작업에 더 적합합니다. 변경하려는 항목의 대부분이 태그 속성이기 때문입니다.

replace_html을 사용하면 문제를 일으킬 수있는 중첩 태그가 생깁니다. 요소를 완전히 대체하려고합니다. 바꾸기는 replace_html과 동일한 구문을 사용하므로 replace_html을 바꾸기 만하면 같은 문제가 발생합니다.

여기 당신이 원하는 무엇 :

page.replace 'more-link', :text => link_to_remote "More Posts", 
    :url => {:action => 'view' ,:id => link.to_i + 1} , 
    :html => {:id => 'more-link'} 

그러나 나는 link_to_remote가 RJS에서 액세스 할 수 있는지 확실하지 않습니다. 위의 코드가 작동하지 않으면 항상 다음을 수행 할 수 있습니다.

page.replace 'more-link', :inline => "<%= link_to_remote 'More Posts', 
    :url => {:action => 'view' ,:id => link.to_i + 1}, 
    :html => {:id => 'more-link'} %>", :locals => {:link => link} 
+2

실제로'page.replace'는 내부 HTML이 아닌 전체 요소를 대체하는 것이 더 효과적입니다. 또한이 특정'link_to_remote'에 대한 도우미 메소드를 작성하여 모든 URL 및 HTML 매개 변수가 반복되지 않도록 할 수 있습니다. –

+0

@ 배리, replace_html과 replace_html은 절대적으로 맞습니다. 실제로 \ _html을 대체하는 것은 완전히 잘못되었습니다. 귀하의 조언에 대한 답변을 업데이트했으며 \ _html을 (를) 대체하는 것에 대한 설명을 잘못 제공했습니다. – EmFi

+0

당신이 내게 준 솔루션은 완벽하게 작동합니다. 이제 rjs 파일에 조건문을 넣고 싶다면 기본적으로 link == -1의 값을 사용하면 링크를 비활성화 된 html 속성으로 바꾸고 싶습니다. 어떻게해야합니까? – Shiv