我正在尝试制作一个注册可选的Rails应用程序。为简单起见,让我们说它是一个pastebin(也可能是一个像URL缩短器一样)。我希望每个粘贴都可以从两个URL访问:一个具有只读访问权限,可以与其他人共享,另一个具有对粘贴原始创建者的编辑权限。
到目前为止,我已尝试通过在Paste模型中创建两个键来实现此目的: :show_id,:edit_id
我有一个在before_validation上运行的方法:on =>创建回调,为这些键生成这两个随机字符串。
我设置了一些路由,以便'/ s / show_id'和'/ e /:edit_id'转到相应的控制器。
现在我想让'resources'路由助手方法(例如:paste_path,edit_paste_path)指向这些URL,而不是默认值。但是,似乎我需要覆盖to_param方法来执行此操作,但我不确定如何正确输出:show_id或:edit_id。
答案 0 :(得分:1)
覆盖to_param将不起作用,因为它假定记录具有单个标识符。我会尝试重新定义paste_path和edit_path_path。有点像...
module ApplicationHelper
def paste_path(paste)
"/s/#{paste.show_id}"
end
def edit_paste_path(paste)
"/e/#{paste.edit_id}"
end
end
请注意,这只会处理最简单的用例。您可能希望在帮助程序中处理额外的选项,或者处理paste_url,或者处理诸如url_for([:edit,paste])之类的东西,但这是我开始的地方。