是否有任何方式宁静的URL不会显示在浏览器的URL框中?

时间:2012-03-12 02:21:43

标签: ruby-on-rails

假设有Post和Comment模型。

class Post < ActiveRecord::Base
  has_many :comments
end

class Comment < ActiveRecord::Base
  belongs_to :post
end

在config / routes.rb

resources posts do
  resources comments
end

在这种情况下,如果我们检索post id 1的注释id 12,那么正确的restful路由路径将如下:

post_comments_path(@comment.post, @comment)

,这将显示在客户端浏览器的URL框中,如下所示:

post/1/comments/12 

我在这个上下文中关注的是,是否有办法隐藏上面的url字符串,包括id,并替换除id数据之外的其他表达式,例如,“post / comments”,或者不是。

如果这个问题不重要,虽然在查询字符串中公开了id数据,但我很好奇是否存在任何安全问题。

1 个答案:

答案 0 :(得分:0)

您可能想要在网址中显示模型属性时签出Railscast。但是,更容易管理您的资源,保留网址中的id

http://railscasts.com/episodes/63-model-name-in-url

即使在Railscast上,如果你的网址中没有id而只是将名字命名为posts/name-of-post而不是{{1>,你会发现Ryan Bates谈论棘手的问题}}。

要更改网址,您只需覆盖Rails用于将模型转换为网址的posts/1方法。但是,如果不传递to_param,您还需要在其他地方修改代码。