我正在尝试在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'
答案 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!
方法