我对rails非常陌生,并试图通过创建Twitter克隆应用程序来学习框架。我无法理解错误消息,因为代码或多或少与我在会话控制器中的代码相同。我基本上要做的是在我的数据库中保存一个新帖子,然后重定向回用户显示页面。
所以这是我的代码:
def create
@user = User.find(params[:user_id])
@post = Post.new(posts_params)
if @post.save
redirect_to @user , notice: "You have now written a new Tweet"
我的错误讯息:
PostsController中的ActiveRecord :: RecordNotFound #create 找不到没有ID的用户
推文会保存在我的数据库中。但我遇到重定向问题。当我手动写入ID时,它可以正常工作。
答案 0 :(得分:0)
这是因为您没有向您的POST请求发送user_id。我很确定您的推文暂时与任何用户无关。您必须使用devise等身份验证库来保持用户登录。
如果您使用此库,则可以使用current_user方法而不是
@user = User.find(params[:user_id]
执行上述代码也不是很好,因为任何人都可以操作POST表单数据中的user_id来为另一个用户发布推文。如果您有任何疑问,请评论:)