继轨道之后

时间:2014-03-18 01:19:47

标签: ruby-on-rails

我正在尝试在rails中创建一个基本的跟随系统。它在rails控制台中运行良好,但是当我尝试使用rest api创建一个时,我遇到了问题。任何帮助将非常感谢。这是我的代码:

从rest api创建关注者:

def create_follow
  @user = User.find(params[:id])
  attributes = school_params
  respond_with @user.follow!(:school_id => attributes[:id].to_i)
end

学校参数:

def school_params
  params.require(:school).permit(:id)
end

要遵循:

def follow!(user)
  school_relationships.create!(user_id: user.id)
end

错误:

NoMethodError (undefined method `id' for {:follow_id=>2}:Hash):
  app/models/user.rb:30:in `follow!'
  app/controllers/api/v1/user_controller.rb:23:in `create_follow'

2 个答案:

答案 0 :(得分:1)

似乎是follow_id而不是id

def school_params
  params.require(:school).permit(:follow_id)
end

在行动中:

respond_with @user.follow!(:school_id => attributes[:follow_id].to_i)

答案 1 :(得分:0)

我认为问题是,您的代码需要一个user对象,但是您正在传递哈希

def follow!(user)
  school_relationships.create!(user_id: user.id)
end

它期望user_id: user.id中的用户对象。但是你在

中传递一个哈希值

@user.follow!(:school_id => attributes[:id].to_i)

因此,相应地更新您的follow!方法