2

私はレールにかなり慣れていないので、単純なことやレールのやり方を見落としていたら許してください。私の目的は、フォームの URL を完全に置き換えることです。

/users/1

/username

すべての目的のために。(ID の足場を公に公開することは、腕から骨が突き出た状態で歩き回るようなものだと思います。) しかし、実装は思ったよりも少し複雑に思えます。これは、検索方法を単に置き換えるのではなく、レールのインデックス作成とユーザー検索の方法全体を変更するようです。

to_paramファイルのオーバーライドを使用してこれが機能するようになりましたがuser.rb、これを読んだところ、 を使用するときにインデックス作成の 問題 が発生することを意味し、それがどのように影響するかわかりませんparams([:username])

(a) 新しいユーザー作成時のセッション モデル、および

(b) user/show.html.erb ファイルでの @User の使用。

それで、私は次のページを調べました(または質問しました):

この質問から理解したい主な問題:

  1. これに移行すると、どの機能が失われますか? つまり、この置き換えを追求する場合、対処して書き直さなければならないレールで現在「正常に機能する」ものは何ですか?
  2. 練習として、これはFriendly_idに置き換える方が良いでしょうか? ここでの私の懸念は、DB にユーザー名と同じスラッグ列を作成することは少し非 DRY のように見え、私を不快にさせることです。可能であれば、外部の gem への依存を避けたいと思います。
  3. users#show はどのように表示する必要がありますか?
4

3 に答える 3

1

フレンドリーIDをチェックしてください。やろうとしていることを信じられないほど簡単に実行できます。

https://github.com/norman/friendly_id

Railscast もあります。

http://railscasts.com/episodes/314-pretty-urls-with-friendlyid?view=asciicast

于 2012-08-10T04:06:26.950 に答える
0

ユーザー名に@、-、. 「ルートが一致しません」というエラーが表示された場合は、そのルートをフィルタリングする必要があります。下記参照:

match "/user/:username" => 'users#show', :as => :profile, :username => /[\.a-zA-Z0-9_@-]+/
于 2013-05-30T03:48:48.803 に答える
-1

2012 年 8 月 2 日現在の最良の答えは、これを行うと、多くの Rails 規則に違反し、時間と空間自体の構造自体を引き裂くということです。

URL の醜い足場は、RESTfulness に対する Rails のアプローチに必要な部分です。

于 2012-08-02T17:43:33.140 に答える