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 に答える