AJAXに関してはちょっと助けが必要です。私はposts_controllerとlikes_controllerを持っています:AJAXの成功後にViewの要素を変更してください
ユーザーは投稿を「好き」できます。今、私はAJAXを実装しようとしているので、ユーザーが投稿を好きなときや、投稿が「好きでない」ときは、like/unlikeが切り替わります。
AJAXの前に、ページはリフレッシュされ、ビュー内のコードは、特定の投稿が現在のユーザーによって好まれているかどうかを判断します。私はビュー内でifステートメントを実行し、結果に応じて、2つの異なるフォームを表示しました。もしその投稿がまだ好きでなければ、投稿を好き(アクションを作成)するフォームがありました。好きだった、ポストと違うという形があった(アクションを破壊する)。
AJAXを使用して作成部分を実装したので、同様のことが動的に発生しますが、ビューは変更されません(端末/レールコンソール経由で作成されたようですが、 )。私は、ページをリフレッシュせずにビューを更新する最良の方法は何ですか?私は '好きな'リンクやフォームを '違う'リンクやフォームに更新する必要があります。 jqueryでこれを行う唯一の方法はありますか?ここ
は私のコードです:ビューの
class LikesController < ApplicationController
def create
@post = Project.find(params[:like][:likee_id])
respond_to do |format|
format.html{
current_profile.like!(@post)
redirect_to :back
}
format.js {
current_profile.like!(@post)
}
end
end
def destroy
@post = Like.find(params[:id]).likee
current_profile.unlike!(@post)
redirect_to :back
end
end
likes_controllerスニペット:
%ul.dropdown-menu
%li
- if current_profile.like?(post)
= form_for current_profile.likes.find_by_likee_id(post), :html => { :method => :delete } do |f|
%a{:href => "javascript:void(0)", :onclick=>"$(this).closest('form').submit()"}
%i.icon-heart.icon-large{:style => "color: #fedc73;"}
Unlike this Post
- else
= form_for current_profile.likes.build(:likee_id => post.id), :remote => true do |f|
= f.hidden_field :likee_id
%a{:href => "javascript:void(0)", :onclick=>"$(this).closest('form').submit()"}
%i.icon-heart-empty.icon-large
Like this Post
create.js.hamlファイル:
:plain
$(this).closest('form').submit()
すべてのヘルプは非常だろう感謝。どうもありがとうございます!
あなたが$.post('url', data, function(returned_data){ $.('like_div').html(returned_data) })
を使用することができますしかし、その代わりに、手動でリンクを作成するのではなく、あなたがレールに1を生成することがありました
私はここで自分の[質問] [1]に答えました。これがあなたに頭をアップさせるかどうか見てください。 [1]:http://stackoverflow.com/questions/10107689/getting-rid-of-form-and-use-just-button-to-create-new-record – Victor