我无法理解安装Devise时在控制器中自动生成的这一行:
before_action :set_post, only: [:show, :edit, :update, :destroy]
我尝试阅读文档,但我无法理解它的作用。例如,:set_post
符号有什么作用?它的一部分是什么?
任何可以进一步阅读的解释或资源将不胜感激。
答案 0 :(得分:1)
假设您有一个这样的控制器:
class PostController < ApplicationController
def index
@posts = Post.all
end
def show
@post = Post.find(params[:id])
end
def edit
@post = Post.find(params[:id])
end
end
您会发现在show
和edit
操作中存在相同的代码,您违反了DRY原则,因此为了避免重复代码,您需要设置一个操作(方法) ):
def set_post
@post = Post.find(params[:id])
end
将在需要相同代码的操作之前执行:
before_action :set_post, only: [:show, :edit, :update, :destroy]
最后你将拥有一个这样的控制器:
class PostController < ApplicationController
def index
@posts = Post.all
end
def show
end
def edit
end
private
def set_post
@post = Post.find(params[:id])
end
end
答案 1 :(得分:0)
:set_post - 控制器末尾的方法。
该设备与
没有任何关系