Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails秘密URL_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails秘密URL

Ruby on rails Rails秘密URL,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在尝试注册可选的Rails应用程序。为了简单起见,让我们假设它是一个粘贴库(也可以是类似URL缩短器的东西)。我希望每个粘贴都可以从两个URL访问:一个具有只读访问权限以便与其他人共享,另一个具有编辑访问权限以便粘贴的原始创建者 到目前为止,我已经尝试通过在粘贴模型中创建两个关键点来实现这一点: :显示\u id,:编辑\u id 我有一个在before_validation:on=>create回调上运行的方法,它为这些键生成这两个随机字符串 我设置了一些路由,以便“/s/show_id”

我正在尝试注册可选的Rails应用程序。为了简单起见,让我们假设它是一个粘贴库(也可以是类似URL缩短器的东西)。我希望每个粘贴都可以从两个URL访问:一个具有只读访问权限以便与其他人共享,另一个具有编辑访问权限以便粘贴的原始创建者

到目前为止,我已经尝试通过在粘贴模型中创建两个关键点来实现这一点: :显示\u id,:编辑\u id

我有一个在before_validation:on=>create回调上运行的方法,它为这些键生成这两个随机字符串

我设置了一些路由,以便“/s/show_id”和“/e/:edit_id”转到相应的控制器


现在我想让“资源”路由帮助器方法(例如:粘贴路径、编辑粘贴路径)指向这些URL,而不是默认URL。不过,似乎我需要重写to_param方法来完成此操作,但我不确定如何让它正确输出:show_id或:edit_id。

重写to_param将不起作用,因为它假定记录有一个标识符。我会尝试重新定义粘贴路径和编辑路径。类似于

module ApplicationHelper
  def paste_path(paste)
    "/s/#{paste.show_id}"
  end

  def edit_paste_path(paste)
    "/e/#{paste.edit_id}"
  end
end 

注意,这将只处理最简单的用例。您可能希望在帮助程序中处理额外的选项,或者同时处理粘贴url,或者处理类似于url for([:edit,paste])等的内容,但这就是我要开始的地方。

覆盖到\u参数将不起作用,因为它假定记录具有单个标识符。我会尝试重新定义粘贴路径和编辑路径。类似于

module ApplicationHelper
  def paste_path(paste)
    "/s/#{paste.show_id}"
  end

  def edit_paste_path(paste)
    "/e/#{paste.edit_id}"
  end
end 

注意,这将只处理最简单的用例。你可能想在助手中处理额外的选项,或者处理粘贴url,或者处理类似于url for([:编辑,粘贴])等的内容,但这就是我要开始的地方。

澄清一下:你是否也在应用程序中使用了任何类型的用户身份验证?我很想看到你只有一个url和某种身份验证来显示内部的编辑/删除操作。是的,我正在使用一些用户身份验证,但正如我所说的,我计划将注册设置为可选。我现在正在考虑的一个选择是,只允许注册用户进行编辑。澄清一下:您是否也在应用程序中使用任何类型的用户身份验证?我很想看到你只有一个url和某种身份验证来显示内部的编辑/删除操作。是的,我正在使用一些用户身份验证,但正如我所说的,我计划将注册设置为可选。我现在正在考虑的一个选择是只对注册用户进行编辑。