Javascript 如何让Ajax在Rails中工作?
我正在学习Michael Hartl的Ruby on Rails教程(http://ruby.railstutorial.org/ruby-on-rails-tutorial-book)我正试图让AJAX功能发挥作用,这让我陷入了困境 我在用户配置文件页面上有一个“follow/unfollow”按钮,我希望在单击该按钮时动态更新该按钮。我尝试实现的代码如下所示: *\u follow.html.erb:Javascript 如何让Ajax在Rails中工作?,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,我正在学习Michael Hartl的Ruby on Rails教程(http://ruby.railstutorial.org/ruby-on-rails-tutorial-book)我正试图让AJAX功能发挥作用,这让我陷入了困境 我在用户配置文件页面上有一个“follow/unfollow”按钮,我希望在单击该按钮时动态更新该按钮。我尝试实现的代码如下所示: *\u follow.html.erb: <%= form_for current_user.relationships.
<%= 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 %>
<%= 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 %>
@user.id),:remote=>true do | f |%>
*\u unfollow.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 %>
<%= 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 %>
{:method=>:delete},:remote=>true do | f |%>
如您所见,我使用了“:remote=>true”调用来告诉控制器使用页面的js实现(请参阅以下代码):
类关系控制器
由于某些原因,实际的javascript在页面上从未更新过-当我查看日志时,它甚至说它已经呈现了新元素。。。但它不会改变页面的视图
对这里发生的事情有什么想法吗?我是否需要在配置文件中执行其他操作才能使javascript/Ajax为该应用程序工作
提前感谢您的帮助 您缺少实际更新页面的位。即rjs文件 API在此: 这将有类似的代码
update_page do |page|
page.insert_html :bottom, 'list', "<li>#{@item.name}</li>"
page.visual_effect :highlight, 'list'
page.hide 'status-indicator', 'cancel-link'
end
update_page do|page|
page.insert_html:bottom,‘list’,“{@item.name} ”
page.visual_效果:突出显示“列表”
page.hide“状态指示器”、“取消链接”
结束
你也不知道;I don’我没有提到你使用的是什么版本的rails?我使用的是rails 3.1.1,在rails 3.0教程之后也遇到了同样的问题。在版本更新中,Rails已经脱离了原型,开始使用jQuery。为了更正旧版本的javascript,我必须更新create/destroy.js.erb
你可以在报纸上读到。它归结为在标记id前面添加一个“#”,并将“.update”call替换为“.html”。对不起,我现在有点忙,但是如果您不熟悉rjs,这里有一些东西可以帮助您谢谢您的提示-我使用的是Rails 3.0.3。关于rjs文件,我有一个js.erb文件,我认为应该更新页面,但它似乎不起作用。代码是:create.js.erb:$(“follow_form”).update(“”$(“followers”).update(“”)我将查看您在上面注意到的API链接。希望那里有什么东西能让事情顺其自然。再次感谢!您是否将默认javascript库与rails 3一起使用?或者jQueryAPI?一般来说,您的代码看起来是正确的。我建议使用firebug检查ajax调用的响应,您试过了吗?你知道怎么做吗?