In meiner Blog-Anwendung erscheinen einige Posts als Auszüge - d. H. Der Benutzer sieht die ersten (sagen wir) 500 Zeichen und kann auf einen Link klicken, um den gesamten Post anzuzeigen. Hier ist der relevante Teil:Best Practices für die Verwendung von AJAX ohne integrierte Rails-Helfer?
<% 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>
Jedoch statt "Hier klicken für mehr!" Wenn ich den Benutzer auf eine separate Seite bringe, möchte ich, dass der Rest des Posts in die Zeile eingefügt wird. Zur Zeit habe ich das schon Umsetzung durch das obige Snippet in der folgenden div setzen:
<div class="post" id="post_<%= post.id %>">
<%= render :partial => 'post_content', :locals => { :post => post, :length => 500 } %>
</div>
ich dann die ID des div in meinem application.js verwenden, um die AJAX zu tun:
$(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;
});
});
Das ist offensichtlich ekelhaft - ich möchte nicht, dass mein Javascript von der Position der ID des Beitrags in der href des Links abhängt, aber ich weiß keine andere Möglichkeit, dass das Javascript weiß, welchen Beitrag es bekommt und daher in welchen div sollte der Inhalt eingefügt werden.
Was ist der beste Weg, dies zu erreichen? Sollte ich einfach wieder AJAX-Helfer von Rails benutzen?
Warum Sie keine Schienen Helfer verwenden? – marcgg
Halten Sie mein Javascript unauffällig/aus der Präsentationslogik heraus? Auf der anderen Seite könnte es die am wenigsten schlechte Option sein. Wenn "die Schienenhelfer benutzen" die Antwort ist, dann sei es so. –
Ich gab Ihnen zwei Lösungen mit oder ohne Schienen Helfer – marcgg