我成功使用RJS在page.replace.html create.js.rjs上實現AJAX。我試圖更新兩個位置而不是一個,並在觀看後Ryan Bates Railscast我非常接近(我認爲),但在我的/views/likes/create.js.rjs文件的語法中存在問題。這裏的情況是:更新多個div w/RJS/AJAX
位於/views/likes/create.js.rjs是下面的代碼:
page.replace_html "votes_#{ @site.id }", :partial => @like
page.replace_html "counter", 10 - (@question.likes.count :conditions => {:user_id => current_user.id})
page[@like].visual_effect :highlight
我的問題就出在第二行。 DIV的「計數器」顯示了/views/question/show.html.erb頁面下面的代碼:
<div id="counter">
You have <%= 10 - (@question.likes.count :conditions => {:user_id => current_user.id}) %> votes remaining for this question
</div>
從看屏幕投我相信我的錯誤必須做瓦特/秒的語法線。具體而言,他提到你不能使用本地實例變量,但不知道如何進行更改。思考?
更新:這裏是我得到的錯誤:
ActionView::TemplateError (undefined method `likes' for nil:NilClass) on line #2 of app/views/likes/create.js.rjs:
1: page.replace_html "votes_#{ @site.id }", :partial => @like
2: page.replace_html "counter", 10 - (@question.likes.count :conditions => {:user_id => current_user.id})
3: page[@like].visual_effect :highlight
app/views/likes/create.js.rjs:2:in `_run_rjs_app47views47likes47create46js46rjs'
app/views/likes/create.js.rjs:1:in `_run_rjs_app47views47likes47create46js46rjs'
app/controllers/likes_controller.rb:8:in `create'
Rendered rescues/_trace (103.8ms)
Rendered rescues/_request_and_response (0.4ms)
Rendering rescues/layout (internal_server_error)
UPDATE:
類LikesController < ApplicationController的
def create
@user = current_user
@site = Site.find(params[:site_id])
@like = @site.likes.create!(params[:like].merge(:user_id => @user.id))
respond_to do |format|
format.html { redirect_to @site}
format.js
end
end
end
更新:這裏是喜歡形成:
<% remote_form_for [site, Like.new] do |f| %>
<%= f.hidden_field :site_name, :value => "#{site.name}" %>
<%= f.hidden_field :question_id, :value => @question.id %>
<%= f.hidden_field :ip_address, :value => "#{request.remote_ip}" %>
<%= f.hidden_field :like, :value => "1" %>
<%= submit_tag "^" , :class => 'voteup' %>
<% end %>
請粘貼您在此ajax請求上運行的控制器操作中的代碼。 – klew 2010-05-21 09:25:29
剛剛添加了喜歡的控制器創建動作...是你在說什麼? – bgadoci 2010-05-21 11:32:59