사용자가 다른 버튼을 클릭하고 클릭 한 버튼에 따라 다른 콘텐츠를 렌더링 할 수있는 뷰를 만들려고합니다. 나는 이것을 JS로 시도했지만 실제로 작동시킬 수는 없습니다. 내 관점에서 버튼을 만들었습니다.
<div class="link">
<%= link_to "Greetings", "#" %>
</div>
<div id="show"></div>
그런 다음 job.js.erb에서 :
$(function() {
$('.link').click(function() {
$('#show').append("<%=escape_javascript render(:partial => 'show' %>");
});
});
안타깝게도 렌더는 애셋에서 지원되지 않습니다.하지만이 작업을 수행하는 가장 좋은 방법이 무엇인지 잘 모르겠습니다.
시도 할 수있는 한 가지 방법은 버튼 클릭을 AJAX에 의해 컨트롤러 작업으로 이동시킨 다음 이름으로 파일을 렌더링하는 것 <action_name>.js.erb
입니다. 그러면이 파일이 render
작업 을 호출 할 수 있습니다 .
다음 사항에 대해 더 자세히 설명하겠습니다.
질문에서 해당 리소스에 가정이다 Greetings
그리고 당신은이 dynamic_show
의 행동 Greetings
, 예를 들어, 컨트롤러, 당신은이 dynamic_show_greetings_path
이 작업에 대한 라우팅을.
보기 내에서 다음을 가질 수 있습니다.
<div class="link">
<%= link_to "Greetings", dynamic_show_greetings_path, remote: true %>
</div>
<div id="show"></div>
과 Greetings#dynamic_show
행동은 다음과 같이 될 것입니다 :
def dynamic_show
respond_to do |format|
format.js
end
end
그런 다음보기 디렉터리에 dynamic_show.js.erb
다음과 같이 동적보기를 추가하는 스크립트가 포함 된 파일이 있습니다.
$('#show').html("<%=escape_javascript render(:partial => 'show') %>");
그리고 그것은 당신을 위해 그것을 해결합니다!
물론 이제 동적으로 만들려면 매개 변수를 컨트롤러에 전달한 다음받은 응답에 따라 콘텐츠를 렌더링해야합니다.
추신:
remote: true
링크에 설정 하면 통화가 통화가됩니다 AJAX
.dynamic_show
응답 js
하면 렌더링됩니다.dynamic_show.js.erb
이것이 당신을 위해 큰 빛을 던지기를 바랍니다 ...;)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다