Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何让Ajax在Rails中工作?_Javascript_Ruby On Rails_Ajax - Fatal编程技术网

Javascript 如何让Ajax在Rails中工作?

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.

我正在学习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.
                          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调用的响应,您试过了吗?你知道怎么做吗?