當談到AJAX時,我是一個全新手,需要一點幫助。我有一個posts_controller和一個likes_controller:AJAX成功後在View中更改元素
用戶可以'喜歡'或'不像'的職位。現在,我正在嘗試實現AJAX,以便類似/不同時會在用戶「喜歡」帖子或「unlikes」帖子時切換。
在AJAX之前,頁面會刷新,視圖中的代碼將確定當前用戶是否喜歡給定的帖子。我在視圖中運行了一條if語句,並根據結果顯示了兩種不同的表單 - 如果帖子還沒有被喜歡,那麼就有一種表單來「喜歡」該帖子(創建動作),並且如果該帖子已經存在喜歡,有一種形式,以'不同'的職位(摧毀行動)。
現在我已經使用AJAX實現了創建部分,類似的動態發生,但視圖不會改變(我可以看到類似的是通過終端/軌道控制檯創建的,但鏈接上的文本保持不變)。我想知道什麼是更新視圖而不刷新頁面的最佳方式?我需要更新'喜歡'的鏈接和形式與'不同'鏈接和形式一旦通過AJAX發生。是唯一的方法來通過jQuery來做到這一點?
這裏是我的代碼: likes_controller
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
視圖的一個片段:
%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()
任何幫助將是非常讚賞。非常感謝!
我在這裏回答了我自己的[問題] [1]。看看這是否會給你提醒。 [1]:http://stackoverflow.com/questions/10107689/getting-rid-of-form-and-use-just-button-to-create-new-record – Victor 2012-04-27 03:38:42