ruby-on-rails - Rails - 需要应用程序中每个页面的通用反向链接
问题描述
可能最重要的是我在这里寻找健全性检查。
所以我有一个包含许多不同模型的应用程序,并且许多模型都将模型嵌套到 n 级。我一直在尝试构建一个反向链接帮助程序,它将提供一个链接,让用户备份他们进入此页面所采用的路径。由于用户可以通过多种方式到达页面,因此我无法在每种情况下都对反向链接进行硬编码。
这是我现在所拥有的,但效果不太好。
class ApplicationController < ActionController::Base
before_action :store_url, if: :current_user
def skipped_routes
["edit", "new", "submit", "aprove", "revert", "add", "add_options", "unschedule", "complete", "assign", "unasign", "select", "resend", "disable", "activate"]
end
def store_url
tree = session[:my_previous_url].split(",")
if tree.last == request.original_url
session[:my_previous_url] = tree.pop
elsif request.referer != tree.last and skipped_routes.exclude? request.referer.split("/").last
session[:my_previous_url] << ",#{request.referer}"
end
end
end
然后在帮助文件中
module ApplicationHelper
def back_link(path= nil)
unless path.blank?
link_to path, class: "back_link" do
concat content_tag :i, "", class: "fas fa-chevron-left"
concat "Back"
end
else
last = session[:my_previous_url].split(",").last
link_to last, class: "back_link" do
concat content_tag :i, "", class: "fas fa-chevron-left"
concat "Back"
end
end
end
我遇到的麻烦是应用程序控制器的 store_url 方法中的逻辑。我希望它在这两种情况之间进行简单的评估。
第一种情况是当前页面与最近存储的路径具有相同的 url。在这种情况下,用户会单击返回链接,现在正在查看最后一个访问页面之前的页面。
如果用户不只是在此页面上,那么我希望该方法将前一页附加到已访问页面的数组中。
有没有人遇到过这种问题?我在这里做错了什么?
解决方案
推荐阅读
- cordova - Meteor为cordova插件设置android本地文件路径
- javascript - 与 Create-React-App 一起使用时,我们应该导入整个库还是特定的单个组件?
- node.js - 为什么等待新的 Promise 导致立即退出?
- c# - 长时间运行的任务在事件触发后推迟执行顺序先前的代码
- c++ - 禁止“重命名”复制文件
- php - 使用 foreach 更新多条记录
- mongodb - MongoDB如何在findOneAndUpdate之后不返回文档
- node.js - Nodemailer 联系表单被提交虚假数据的垃圾邮件机器人击中
- asp.net-core - 使用路径和查询参数的 WebApi GET
- python - 如何将字节转换为 bitstirng