【发布时间】:2011-02-27 22:32:07
【问题描述】:
我正在阅读 Michael Hartl 的 Ruby on Rails 教程 (http://ruby.railstutorial.org/ruby-on-rails-tutorial-book),但我陷入了困境试图让 AJAX 功能正常工作。
我在用户个人资料页面上有一个“关注/取消关注”按钮,我希望在单击该按钮时动态更新该按钮。我尝试实现的代码如下:
*_follow.html.erb:*
<%= form_for current_user.relationships.
build(:followed_id => @user.id), :remote => true do |f| %>
<div><%= f.hidden_field :followed_id %></div>
<div class="actions"><%= f.submit "Follow" %></div>
<% end %>
*_unfollow.html.erb*
<%= form_for current_user.relationships.find_by_followed_id(@user),
:html => { :method => :delete }, :remote => true do |f| %>
<div class="actions"><%= f.submit "Unfollow" %></div>
<% end %>
如您所见,我使用了 ':remote => true' 调用来告诉控制器执行页面的 js 实现(参见以下代码):
class RelationshipsController < ApplicationController
before_filter :authenticate
def create
@user = User.find(params[:relationship][:followed_id])
current_user.follow!(@user)
respond_to do |format|
format.html { redirect_to @user }
format.js
end
end
def destroy
@user = Relationship.find(params[:id]).followed
current_user.unfollow!(@user)
respond_to do |format|
format.html { redirect_to @user }
format.js
end
end
end
由于某种原因,页面上的实际 javascript 永远不会更新 - 当我查看日志时,它甚至说它已经呈现了新元素......但它不会改变页面的视图。
对这里发生的事情有什么想法吗?我是否需要在配置文件中执行其他操作才能让 javascript / Ajax 为该应用程序工作?
提前感谢您的帮助!
【问题讨论】:
-
对不起,我现在有点忙,但是如果你不熟悉 rjs railscasts.com/episodes/archive?utf8=%E2%9C%93&search=rjs,这里有一些可以帮助你的东西
标签: javascript ruby-on-rails ajax