找不到提供user_id参数的用户

时间:2014-03-23 21:14:22

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我对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时,它可以正常工作。

1 个答案:

答案 0 :(得分:0)

这是因为您没有向您的POST请求发送user_id。我很确定您的推文暂时与任何用户无关。您必须使用devise等身份验证库来保持用户登录。

如果您使用此库,则可以使用current_user方法而不是

@user = User.find(params[:user_id]

执行上述代码也不是很好,因为任何人都可以操作POST表单数据中的user_id来为另一个用户发布推文。如果您有任何疑问,请评论:)