내 블로그 응용 프로그램에서 일부 게시물은 발췌문으로 표시됩니다. 즉, 사용자는 첫 번째 500자를보고 링크를 클릭하여 전체 게시물을 볼 수 있습니다. 다음은 관련 부분입니다.레일의 빌트인 헬퍼없이 AJAX를 사용하기위한 모범 사례?
<% href = url_for post_path(:id => post) %>
<h1 class="title"><%= post.title %></h1>
<h2 class="published_on"><%= post.author %> wrote this <%= time_ago_in_words(post.published_on)%> ago</h2>
<div class="body">
<% if defined?(length) %>
<%= truncate_html(post.body, :length => length, :omission => "…<h1><a class='more' href=\"#{href}\">Click here for more!</a></h1>") %>
<% else %>
<%= post.body %>
<% end %>
</div>
그러나 "여기를 클릭하십시오!" 사용자를 별도의 페이지로 가져 가면 나머지 게시물을 인라인으로 채우고 싶습니다. 나는 다음 AJAX을 내 application.js이 사업부의 ID를 사용
<div class="post" id="post_<%= post.id %>">
<%= render :partial => 'post_content', :locals => { :post => post, :length => 500 } %>
</div>
: 현재, 나는 다음과 같은 사업부에 위의 코드를 넣어이 구현했습니다
$(document).ready(function() {
$("a.more").click(function() {
var url = $(this).attr('href');
var id = url.split("/")[2]
$.get(url, null, function(data) {
$("#post_" + id).html(data);
});
return false;
});
});
이것은 분명히 역겨운입니다 - 내 자바 스크립트 링크의 href에서 게시물의 ID의 위치에 의존하고 싶지 않아요,하지만 자바 스크립트에 대한 어떤 다른 방법을 알고 있기 때문에 어떤 게시물을 받고 따라서 div를 삽입해야합니다.
이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 레일스의 AJAX 도우미를 사용해야할까요?
왜 레일 도우미를 사용하지 않으려는? – marcgg
내 자바 스크립트를 눈에 잘 띄지 않게/프리젠 테이션 로직 밖으로 유지 하시겠습니까? 반면에, 그것은 가장 나쁜 선택 일 수 있습니다. "레일 헬퍼 사용"이 대답이면, 그렇게하십시오. –
레일 도움말을 사용하거나 사용하지 않고 두 가지 해결책을 제시했습니다. – marcgg