Ruby on Rails jquery渲染部分问题

时间:2016-07-17 15:30:17

标签: javascript jquery ruby-on-rails ajax ruby-on-rails-4

首先关闭你好,谢谢你花时间阅读我的问题,

简而言之,我做错了什么似乎无法弄清楚它现在已经尝试了一段时间。

使用:acts_as_follower gem,并设置简单的follow和unfollow按钮,当你按下它时,create.js和destroy.js有一个局部渲染部分渲染,但是我得到500内部错误

NoMethodError in Follows#create

显示/app/views/follows/_form.html.erb,其中第2行引发: undefined方法`follow_by?'为零:NilClass 模板包含跟踪:app / views / follow / create.js.erb

FollowsController

    class FollowsController < ApplicationController
  before_action :authenticate_user!
  respond_to :js

  def create
    @v = Vlog.find(params[:vlog_id])
    current_user.follow(@v)
        respond_to do |format|
      format.html
      format.js
    end
  end

  def destroy
    @v = Vlog.find(params[:vlog_id])
    current_user.stop_following(@v)
            respond_to do |format|
      format.html
      format.js
    end
  end
end

索引视图

<%= render :partial => 'follows/form', locals: {:vlog_id => @vlog.id} %>

路线

  match :follow, to: 'follows#create', as: :follow, via: :post
  match :unfollow, to: 'follows#destroy', as: :unfollow, via: :post

如下/ _form.html.erb

  <div class="follow">
  <% if @vlog.followed_by?(current_user) %>
    <%= form_tag unfollow_path(vlog_id: @vlog.id), remote: true do %>
      <%= button_tag 'unfollow', class: 'btn btn-primary' %>
    <% end %>
  <% else %>
    <%= form_tag follow_path(vlog_id: @vlog.id), remote: true do %>
      <%= button_tag 'follow', class: 'btn btn-success' %>
    <% end %>
  <% end %>
</div>

跟随/ create.js和destroy.js

$(".follow").html("<%=j render(:partial => 'follows/form', locals: {:vlog_id => @v.id}).html_safe %>")

提前致谢!

0 个答案:

没有答案