我正在實施用戶評論的顯示/隱藏功能。如何在rails上實現顯示所有評論功能?
這裏討論:https://stackoverflow.com/a/10174194/439688
我的目標是: 1。限制默認顯示的評論2. 2.有文本的跨度,指出總的意見的該特定和微柱時點擊數由用戶將其展開並顯示該微博的所有評論。我將使用Jquery/Ajax來隱藏,顯示,預先等等。
第一個變化是限制向用戶顯示的註釋量,我通過在我的幫助程序中創建一個名爲「comments」的方法來實現此目的,這裏我傳入評論所屬微博的身份。
def get_comments(micropost_id)
Comment.limit(2).order("created_at DESC").where(:micropost_id => micropost_id)
end
現在,循環顯示每條評論的每個循環僅顯示2條最新評論。
<<% @microposts.each do |m| %>
<% if m.poster_id.nil? %>
<div class="postHolder">
<nav class="micropostOptions">
<ul class="postMenu">
<li class="deletePost"><%= link_to content_tag(:span, "Delete post"), m, :method => :delete, :confirm => "Are you sure?", :title => m.content, :class => "message_delete", :remote => true %>
</li>
<li class="disableCommenting"><%= link_to content_tag(:span, "Pause commenting"), "2" %></li>
<li class="blockCommenter"><%= link_to content_tag(:span, "Block commenter"), "3" %></li>
<li class="openInNewWindow"><%= link_to content_tag(:span, "Open in new window"), "4" %></li>
<li class="reportAbuse"><%= link_to content_tag(:span, "Report abuse"), "5" %></li>
</ul>
</nav>
<%= link_to image_tag(default_photo_for_current_user, :class => "poster_photo"), current_users_username %>
<div class="post_content">
<div class="post_container">
<div class="mainUserNameFontStyle"><%= link_to current_users_username.capitalize, current_users_username %> - <div class="post_time"> <%= time_ago_in_words(m.created_at) %> ago.</div>
</div>
<%= simple_format h(m.content) %> </div>
<div class="commentsCount">
<%= content_tag :span, pluralize(m.comments.count, 'comment'), :class => "view_all_comments" if m.comments.any? %>
</div>
<% if m.comments.any? %>
<% comments(m.id).each do |comment| %>
<div class="comment_container">
<%= link_to image_tag(default_photo_for_commenter(comment), :class => "commenter_photo"), commenter(comment.user_id).username %>
<div class="commenter_content"> <div class="userNameFontStyle"><%= link_to commenter(comment.user_id).username.capitalize, commenter(comment.user_id).username %> - <%= simple_format h(comment.content) %> </div>
</div><div class="comment_post_time"> <%= time_ago_in_words(comment.created_at) %> ago. </div>
</div>
<% end %>
<% end %>
<% if logged_in? %>
<%= form_for @comment, :remote => true do |f| %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= f.hidden_field :micropost_id, :value => m.id %>
<%= f.text_area :content, :placeholder => 'Post a comment...', :class => "comment_box", :rows => 0, :columns => 0 %>
<div class="commentButtons">
<%= f.submit 'Post it', :class => "commentButton", :disable_with => "Post it" %>
<div class="cancelButton"> Cancel </div>
</div>
<% end %>
<% end %>
</div>
</div>
從這裏,這是它讓我感到困惑。我稍微進一步使用link_to,但後來決定我不希望URL在瀏覽器狀態欄中顯示評論數。這就是爲什麼我改用span ...但現在做我想做的事情並不容易,因爲我現在無法使用link_to/remote => true。
我如何使它所以當用戶點擊評論數跨度的AJAX調用時指向:
def load_comments
@load_comments = Comment.where(:micropost_id => params[:id])
respond_to do |format|
format.js { render :load_comments }
end
end
我想過把點擊功能在users.js但如何將我將上面代碼中每個循環中的micropost的params傳遞給users.js?我不認爲這是可能的。
我的所有評論發佈都是通過ajax完成的,但是因爲我使用了這些表單,所以對於我來說,添加remote => true並創建一些js模板並在ajax post的成功上做了一些操作就容易多了。
不知道我是否正以這種正確的方式去做。我會感謝來自更有經驗的鐵路程序員的一些幫助/建議。
親切的問候
在狀態欄上顯示正在發送的頁面PARAM大多數用戶不能甚至找到位置編輯框鍵入一個url,所以他們只是谷歌的網址。 – 2012-04-17 17:41:42
爲什麼不把你的評論視圖內的部分?然後在點擊事件跨度,你可以調用ajax函數,將更新整個p artial(顯示所有評論)。你也可以傳遞當地人的偏見。我做了類似的事情。但不完全如您的。 – 2012-04-17 17:44:02