Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.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
Ruby on rails Can';t让Ajax使用follow/unfollow按钮-跟随Railstutorial.org,第11课_Ruby On Rails_Ruby_Ajax_Railstutorial.org - Fatal编程技术网

Ruby on rails Can';t让Ajax使用follow/unfollow按钮-跟随Railstutorial.org,第11课

Ruby on rails Can';t让Ajax使用follow/unfollow按钮-跟随Railstutorial.org,第11课,ruby-on-rails,ruby,ajax,railstutorial.org,Ruby On Rails,Ruby,Ajax,Railstutorial.org,我无法在Rails应用程序中使用Ajax 使用Ajax的魔力:当我单击“follow”按钮时,它应该会更新用户在配置文件页面中看到的关注者数量,而无需刷新页面。然而,在我的示例应用程序中,这并没有发生在我身上 所发生的事情是,单击“跟随”按钮时,它会变为“取消跟随”,但跟随者的数量保持不变,直到我在web浏览器中单击“刷新”按钮(在FF和IE中测试)。我正在关注Michael Hartl的railstutorial.org,使用Rails 4和Ruby 2.0.0p195 这是我从FireFox

我无法在Rails应用程序中使用Ajax

使用Ajax的魔力:当我单击“follow”按钮时,它应该会更新用户在配置文件页面中看到的关注者数量,而无需刷新页面。然而,在我的示例应用程序中,这并没有发生在我身上

所发生的事情是,单击“跟随”按钮时,它会变为“取消跟随”,但跟随者的数量保持不变,直到我在web浏览器中单击“刷新”按钮(在FF和IE中测试)。我正在关注Michael Hartl的railstutorial.org,使用Rails 4和Ruby 2.0.0p195

这是我从FireFox获得的控制台消息:

传递给getElementById()的空字符串

下面是我的代码,视图中的“follow”按钮对应于关系控制器中的操作,它们应该点击create.js.erb和destroy.js.erb部分


-控制器- 关系\u controller.rb

def create
    @user = User.find(params[:relationship][:followed_id])
    current_user.follow!(@user)
    # redirect_to @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)
  # redirect_to @user 
  respond_to do |format|
    format.html { redirect_to @user }
    format.js
  end
end
 <% unless current_user?(@user) %>
 <div id="follow_form">
    <% if current_user.following?(@user) %>
        <%= render 'unfollow' %>
    <% else %>
        <%= render 'follow' %>
    <% end %>
 </div>
 <% end %>
-JAVASCRIPT- _create.js.erb:

 $("#follow_form").html("<%= escape_javascript(render('users/unfollow')) %>");
 $("#followers").html('<%= @user.followers.count %>');
 $("#follow_form").html("<%= escape_javascript(render('users/follow')) %>");
 $("#followers").html('<%= @user.followers.count %>');
 <%= form_for(current_user.relationships.build(followed_id: @user.id), remote: true) do |f| %>
    <div><%= f.hidden_field :followed_id %></div>
    <%= f.submit "Follow", class: "btn btn-large btn-primary" %>
 <% end %>
$(“#follow_form”).html(“”);
$(“#followers”).html(“”);
\u destroy.js.erb:

 $("#follow_form").html("<%= escape_javascript(render('users/unfollow')) %>");
 $("#followers").html('<%= @user.followers.count %>');
 $("#follow_form").html("<%= escape_javascript(render('users/follow')) %>");
 $("#followers").html('<%= @user.followers.count %>');
 <%= form_for(current_user.relationships.build(followed_id: @user.id), remote: true) do |f| %>
    <div><%= f.hidden_field :followed_id %></div>
    <%= f.submit "Follow", class: "btn btn-large btn-primary" %>
 <% end %>
$(“#follow_form”).html(“”);
$(“#followers”).html(“”);
-视图-是follow形式,带有_follow.html.erb和_unfollow.html.erb

\u follow\u form.html.erb

def create
    @user = User.find(params[:relationship][:followed_id])
    current_user.follow!(@user)
    # redirect_to @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)
  # redirect_to @user 
  respond_to do |format|
    format.html { redirect_to @user }
    format.js
  end
end
 <% unless current_user?(@user) %>
 <div id="follow_form">
    <% if current_user.following?(@user) %>
        <%= render 'unfollow' %>
    <% else %>
        <%= render 'follow' %>
    <% end %>
 </div>
 <% end %>

\u follow.html.erb:

 $("#follow_form").html("<%= escape_javascript(render('users/unfollow')) %>");
 $("#followers").html('<%= @user.followers.count %>');
 $("#follow_form").html("<%= escape_javascript(render('users/follow')) %>");
 $("#followers").html('<%= @user.followers.count %>');
 <%= form_for(current_user.relationships.build(followed_id: @user.id), remote: true) do |f| %>
    <div><%= f.hidden_field :followed_id %></div>
    <%= f.submit "Follow", class: "btn btn-large btn-primary" %>
 <% end %>

\u unfollow.html.erb

<%= form_for(current_user.relationships.find_by(followed_id: @user), html: { method: :delete }, remote: true) do |f| %>
   <%= f.submit "Unfollow", class: "btn btn-large" %>
<% end %>


注意-我在开发中使用的是postgreSQL,而不是railstutorial中使用的SQLlite。 编辑响应: _stats.html.erb

 <% @user = @user || current_user %>

 <div class="stats">
    <a href="<%= following_user_path(@user) %>">
        <strong id="following" class="stat">
            <%= @user.followed_users.count %>
        </strong>
        following
    </a>

    <a href="<%= followers_user_path(@user) %>">
        <strong id="following" class="stat">
            <%= @user.followers.count %>
        </strong>
        followers
    </a>
 </div>

因为在您的_stats.html.erb文件中,您没有id为
followers
的元素。请查看您的代码

<a href="<%= followers_user_path(@user) %>">
    <strong id="following" class="stat">
        <%= @user.followers.count %>
    </strong>
    followers
</a>

应该是

<a href="<%= followers_user_path(@user) %>">
    <strong id="followers" class="stat">
        <%= @user.followers.count %>
    </strong>
    followers
</a>

我会发布我的补丁。在我的
\u follow\u form.html.erb
文件中,由于我自己的样式,我没有包含
id=“follow\u form”
。您需要确保包含以下表单ID

应该是:

<% unless current_user?(@user) %>
  <div id="follow_form">
    <% if current_user.following?(@user) %>
      <%= render 'unfollow' %>
    <% else %>
      <%= render 'follow' %>
    <% end %>
  </div>
<% end %>

您能否发布包含零件的视图,并显示跟随者的数量?