如何隐藏" id"在url上使用ruby on rails

时间:2015-11-05 15:43:51

标签: ruby-on-rails ruby url

controller.rb

@user = User.where(:id => params[:id]).take

html.erb

<a href="/home/layout02_03/<%=@interest.id%>">
 something
</a>

点击标签,然后网址为&#34; / home / layout02_03 / 3&#34;

3是用户的ID,

但我不想公开那个&#34; id&#34;

我怎么能这样做,我在轨道上使用ruby

2 个答案:

答案 0 :(得分:2)

您需要在用户模型上拥有任何其他唯一属性,例如一些随机的GUID值,一旦你拥有它,只需使用它而不是ID:

<a href="/home/layout02_03/<%= @interest.obscure_uniq_identifier %>">

或者将其定义为User的默认URL表示:

class User

def to_param
  obscure_uniq_identifier
end

您可以使用以下方式生成一个:

before_create :generate_guid
def generate_guid
  self.obscure_uniq_identifier = SecureRandom.hex
end

答案 1 :(得分:0)

对于遇到相同问题的任何人,我也建议您使用Visibilize之类的gem,它提供了更多有关创建可公开友好ID的选项。

只需安装gem并在模型中调用visibilize