Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 RubyonRails路由匹配用户名_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails RubyonRails路由匹配用户名

Ruby on rails RubyonRails路由匹配用户名,ruby-on-rails,ruby,Ruby On Rails,Ruby,我相信有一个简单的解决办法,但我似乎找不到 我想匹配以下动态用户名: /users/dymanicUsername 这在routes.rb中会是什么样子 谢谢你的帮助。allister 要做到这一点,只需在模型中重写为_param。例如: #users.rb def to_param self.username end 您很快就会遇到一些问题: 与现有路线冲突。例如,用户名不应该是“新的”,明白吗 为了在控制器中获取您的用户,您应该在您的模型中创建一个方法(我就是这么做的,可能不是

我相信有一个简单的解决办法,但我似乎找不到

我想匹配以下动态用户名:

 /users/dymanicUsername
这在routes.rb中会是什么样子

谢谢你的帮助。

allister

要做到这一点,只需在模型中重写为_param。例如:

#users.rb

def to_param
  self.username
end
您很快就会遇到一些问题:

  • 与现有路线冲突。例如,用户名不应该是“新的”,明白吗
  • 为了在控制器中获取您的用户,您应该在您的模型中创建一个方法(我就是这么做的,可能不是最好的解决方案),就像这样
  • 您的用户名应仅包含启用url的字符(忘记重音、字母等)。解决这个问题的一个方法是使用第二个属性names
    username\u urlized
    ,该属性当然应该是唯一的,并且不会与其他路由冲突
也许还有更多的问题:)

此外,如果您想要twitter(yoursite.com/dynamiccuserName)之类的东西,请在routes.rb中执行以下操作:

resources :users, :path=>'' do

以下是2006年对Rails 2.3的一个很好的解释。*:

我看到的主要问题是,您不仅要确保Marcel提到的上述所有内容,还要确保名称是唯一的。ie在迁移中使用
:unique=>true对名称进行索引


对于我刚刚升级到的rails3,您将以不同的方式进行路由。例如,
map.connect
match

取代,谢谢Marcel!它通过在模型中添加到_parm方法来工作。