0

我知道这是个老问题,但我不明白为什么半年前有效的代码不起作用。所以我想让只有所有者才能访问他们的帖子。我认为它可以这样写:

   def create
   @post = current_user.posts.new params[:post]
  if @post.save
    flash[:notice] = 'Post created'
    redirect_to @post
  else
    render :new
  end
    end

并在编辑和其他控制器中

     def edit
       if (current_user.id == @post.user_id)
    @post = Post.find params[:id]
  else
    flash[:notice] = 'You are not owner!'
  end
end|

但是在我登录时得到的视图中:

 undefined method `user_id' for nil:NilClass

我的问题在哪里?

4

1 回答 1

2
def edit
  # The @post is nil unless you set it in a before filter.
  if (current_user.id == @post.user_id)
    @post = Post.find params[:id]
  else
    flash[:notice] = 'You are not owner!'
  end
end

你应该先找到帖子。

def edit
  @post = Post.find params[:id]
  if (current_user.id != @post.user_id)
    flash[:notice] = 'You are not owner!'
  end
end
于 2012-06-08T10:07:30.873 回答