1

routes.rb設定しました

一致する"member/:permalink" => "accounts#profile"

ユーザーのURL名が、、、の場合john-greenjohn_greenすべてjohngreenが正常に機能していますが、URL名がjohn.green、の場合、パーマリンクは最初の部分だけが取得されるため、john 具体的には、Railsデバッグウィンドウから:

Request

Parameters:

{"permalink"=>"john",
 "format"=>"green"}

.パーマリンクで(ドット)が受け入れられないのはなぜですか?それを使用するための機能はありますか? 使用するときに編集する

  match "member/:permalink" => "accounts#profile", 
        :requirements       => { :permalink => /.+/ }

私は得る

{"requirements"=>{"permalink"=>/.+/},
 "permalink"=>"john",
 "format"=>"green"}
4

1 に答える 1

1

デフォルトでは、Rails はドットの後のすべてをフォーマットとして扱い、この動作をオーバーライドする簡単な方法はないようです。:requirementsただし、オプションを使用する少し汚い回避策があります。

match 'member/:permalink' => 'accounts#profile', 
      :constraints        => { :permalink => /.+/ }

パラメータに貪欲な正規表現を追加することで:permalink、Railsmember/はパス内の部分文字列の後に見つかったすべてのものを に渡しますparams[:permalink]

于 2012-04-11T21:15:02.293 に答える