私のブログ アプリケーションでは、いくつかの投稿が抜粋として表示されます。つまり、ユーザーには最初の (たとえば) 500 文字が表示され、リンクをクリックして投稿全体を表示できます。関連する部分は次のとおりです。
<% 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>
ただし、「詳細はこちらをクリックしてください」ではなく、ユーザーを別のページに移動して、残りの投稿をインラインで入力したいと思います。現在、上記のスニペットを次の div に配置して、これを実装しています。
<div class="post" id="post_<%= post.id %>">
<%= render :partial => 'post_content', :locals => { :post => post, :length => 500 } %>
</div>
次に、application.js でこの div の ID を使用して AJAX を実行します。
$(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;
});
});
これは明らかにうんざりです-JavaScriptがリンクのhref内の投稿のIDの場所に依存することを望んでいませんが、JavaScriptがどの投稿を取得しているのか、したがってどの投稿を取得しているのかを知るための他の方法はわかりませんdiv コンテンツを挿入する必要があります。
これを達成するための最良の方法は何ですか? Rails の AJAX ヘルパーの使用に戻る必要がありますか?