使用Rails自动提供的帮助器方法实现链接到先前页面的功能。具体做法是在控制器的动作方法中使用request.referrer存储上一个URL,然后在重定向时使用该URL。代码示例如下:
def create
@post = Post.new(post_params)
if @post.save
flash[:success] = "Post created!"
redirect_to posts_path
else
flash.now[:error] = "Failed to create post"
render :new
end
end
def edit
@post = Post.find(params[:id])
# Store previous URL in session
session[:return_to] ||= request.referer
end
def update
@post = Post.find(params[:id])
if @post.update(post_params)
flash[:success] = "Post updated!"
# Redirect to previous URL, or fallback to default
redirect_to(session.delete(:return_to) || posts_path)
else
flash.now[:error] = "Failed to update post"
render :edit
end
end
在edit方法中,我们使用request.referer来获取上一个URL,并将其存储在session中以便update方法在重定向时使用。在update方法中,我们使用session.delete(:return_to)来删除session中存储的URL,避免重复重定向到同一个URL。
使用这种方法可以轻松实现链接到先前页面的功能,即使在表单输入无效时也能正常工作。