Rails远程:视图中的真正未定义方法

时间:2017-04-20 21:32:10

标签: ruby-on-rails ajax

我有一个Rails 5.0.2应用程序,并且我已设法使用JoinAlias gem实现用户跟随系统。一切都运作良好,但是,我在添加ajax时遇到了一些麻烦。

点击'关注'

后,我收到以下错误消息
acts_as_follower

我有以下

NoMethodError at /7/follow ========================== > undefined method `followed_by?' for nil:NilClass

users_controller.rb

def follow user = User.find(params[:id]) current_user.follow(user) respond_to do |format| format.html { redirect_to user} format.js end end

show.html.erb

... <div id="follow"> <%= render partial: "users/following", locals: {user: @user} %> </div> ...

_following.html.erb

我知道在创建记录后我的部分中没有<% if !@user.followed_by?(current_user) %> <%= link_to follow_user_path(@user.id), remote: true do %> <h4><span class="label label-primary">Follow</span></h4> <% end %> <% else %> <%= link_to unfollow_user_path(@user.id) do %> <h4><span class="label label-primary">Unfollow</span></h4> <% end %> <% end %> ,我无法解决如何将其传回部分内容。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

傻傻的我。

在以下方法中我有这个:

1. Download latest Bootstrap Source to a VS2015 project used for creating a Bootstrap distributable (say bootstrapfactory)
2. Download Variables.less and Theme.less from a site like http://bootstrap-live-customizer.com/ 
3. Use bootstrapfactory to create Bootstrap distributable using the downloaded Variables.less and Themes.less
4. Copy distributables from bootstrapfactory to Target Project's wwwroot\lib\bootstrap\dist

但应该是

def follow
  user = User.find(params[:id])
  current_user.follow(user)

  respond_to do |format|
    format.html { redirect_to user}
    format.js
  end
end

def follow @user = User.find(params[:id]) current_user.follow(@user) respond_to do |format| format.html { redirect_to @user} format.js end end 而不是@user

答案 1 :(得分:0)

你的问题是你的控制器中你有用户,没有“@”用户是一个存在于你的控制器方法中的变量,@ user是一个可以在视图上访问的实例变量。

因此,如果您打算在视图上使用它,则需要在变量中添加“@”。