2014-07-01 175 views
0

我有軌應用程序,用戶可以like a post,當用戶點擊「喜歡」鏈接時,「喜歡」鏈接將更改爲「不喜歡」鏈接(使用渲染部分),也可以創建一個記錄like,它的工作保存到數據庫,我可以看到部分已在日誌中呈現,但部分未在視圖上顯示也刪除了「喜歡」鏈接。渲染部分不顯示

Started POST "/like" for 127.0.0.1 at 2014-07-01 16:45:48 +0700 
    ←[1m←[35mUser Load (1.0ms)←[0m SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1 
Processing by HomesController#create_like as JS 
    Parameters: {"utf8"=>"V", "authenticity_token"=>"kRfosGW9Qsv3e8VH8MU/X/EyLVoJ/ya8T3Abwv7qNwg=", "like"=>{"post_id"=>"4"}} 
    ←[1m←[36m (0.0ms)←[0m ←[1mBEGIN←[0m 
    ←[1m←[35mSQL (1.0ms)←[0m INSERT INTO "likes" ("created_at", "post_id", "updated_at", "user_id") VALUES ($1, $2, $3, $4) RETURNING "id" [["created_at", Tue, 01 Jul 2014 09:45:48 UTC +00:00], ["post_id", 4], ["updated_at", Tue, 01 Jul 2014 09:45:48 UTC +00:00], ["user_id", 1]] 
    ←[1m←[36mPost Load (1.0ms)←[0m ←[1mSELECT "posts".* FROM "posts" WHERE "posts"."id" = 4 LIMIT 1←[0m 
    ←[1m←[35mSQL (1.0ms)←[0m UPDATE "posts" SET "count_like" = COALESCE("count_like", 0) + 1 WHERE "posts"."id" = 4 
    ←[1m←[36m (1.0ms)←[0m ←[1mCOMMIT←[0m 
    ←[1m←[35mPost Load (1.0ms)←[0m SELECT "posts".* FROM "posts" WHERE "posts"."id" = $1 LIMIT 1 [["id", 4]] 
    Rendered homes/_like_dislike.html.erb (0.0ms) 
    Rendered homes/create_like.js.erb (6.0ms) 
Completed 200 OK in 42.0ms (Views: 31.0ms | ActiveRecord: 5.0ms) 

當我嘗試重新加載/刷新瀏覽器時,顯示「不喜歡」鏈接。

_posts.html.erb文件

<div class="perpost-content" id="<%= dom_id(post) %>"> 
    <div class="perpost-body"><p><%= post.body %></p></div> 
    <div class="perpost-footer"> 
     <ul class="inline"> 
      <li id="like_<%= dom_id(post) %>"> 
       <%= render 'like_dislike', :post => post %> 
      </li> 
      <% if post.user_id == current_user.id %><li><%= link_to "delete", destroy_post_path(post), method: :delete, data: {confirm: "yakin akan dihapus?"}, :remote => true %></li><% end %> 
     </ul> 
    </div> 
</div> 

_like_dislike.html.erb文件

<% @base_secure = SecureRandom.urlsafe_base64 %> 
<% if post.liked_by? current_user %> 
    <%= link_to "dislike", destroy_like_path(post.likes.where(:user_id => current_user.id).first.id), method: :delete, data: {confirm: "yakin akan dihapus?"}, :remote => true %> 
<% else %> 
    <%= form_for Like.new, :url => { :action => "create_like" }, :html => {:id => "send_like_"+ @base_secure}, :remote => true do |f| %> 
     <%= f.hidden_field :post_id, :value => post.id %> 
     <%= link_to 'like', "#", :onclick => "$('#send_like_"+ @base_secure +"').submit()" %> 
    <% end %> 
<% end %> 

create_like.js.erb

$('#like_<%= dom_id(@post) %>').empty().append('<%= j render :partial => "homes/like_dislike", :collection => @post, :as => :post %>'); 

create_like行動homes_controller.rb

def create_like 
    @like = Like.new(params[:like]) 
    @like.user_id = current_user.id 
    @like.save 
    @post_id = params[:like][:post_id].to_i 
    @post = Post.find(@post_id) 
    respond_to do |format| 
    format.js 
    end 
end 
+1

你渲染它作爲'create_like.js'的集合,但你只有一個對象。我不確定這是唯一的問題,但它可能是其中的一部分。 –

+0

@Baloo謝謝baloo,我已經改變了集合到本地對象看起來像這樣'$('#like _ <%= dom_id(@post)%>')。empty()。append('<%= j render:partial = >「homes/like_dislike」,:locals => {:post => @post}%>');'並且它的工作原理 – itx

+0

您說:「當我嘗試重新加載/刷新頁面時,顯示不喜歡鏈接。這是否意味着部分**被顯示,但是您看到的是「不喜歡」鏈接而不是來自部分的「喜歡」鏈接? –

回答

0

Baloo說:「您將它作爲create_like.js中的集合呈現,但您只有一個對象。」所以,我想改變這種

$('#like_<%= dom_id(@post) %>').empty().append('<%= j render :partial => "homes/like_dislike", :collection => @post, :as => :post %>'); 

$('#like_<%= dom_id(@post) %>').empty().append('<%= j render :partial => "homes/like_dislike", :locals => {:post => @post } %>'); 

Action View Partials Rails 3.2.18