私のブログアプリケーションでは、一部の投稿が抜粋として表示されます。つまり、ユーザーは最初の500文字を見て、リンクをクリックして投稿全体を表示できます。Railsのビルトインヘルパーなしで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にこのdiv要素のIDを使用
<div class="post" id="post_<%= post.id %>">
<%= render :partial => 'post_content', :locals => { :post => post, :length => 500 } %>
</div>
:現在、私は次の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;
});
});
これは明らかにうんざりです - 私はjavascriptがリンクのhrefの投稿のIDの場所に依存することを望んでいませんが、javascriptがどの投稿を取得しているかを知るための方法はわかりませんdivを挿入する必要があります。
これを行うにはどうすればよいですか?レールのAJAXヘルパーを使用するだけに戻すべきですか?
あなたはレールのヘルパーを使用したくないのはなぜ? – marcgg
私のjavascriptを控えめに/プレゼンテーションロジックから外しておきますか?一方、それは最も悪い選択肢かもしれない。 「レールヘルパーを使用する」が答えであれば、そうすることができます。 –
私はあなたにレールヘルパーの有無にかかわらず2つの解決策を教えました – marcgg