0

レールでクリーンな URL を作成するために gem を使用することはできません。代わりに、独自の実装を展開しています。routes.rb に次のエントリを作成しました

match "/:slug" => "cleanurls#index"

cleanurl は、そのようなすべてのリクエストを処理するためのコントローラーです。cleanurl コントローラーで:

class CleanurlsController < ApplicationController


 def index

  slug  = params['slug']

  url = Url.where(:slug => slug).first

  case(url.url_type) 

       when 'profile'

                 user_id = url.id.to_i
                 @profile = Profile_info.getProfileDetails(user_id)
                 render '/profiles/index'
       end

 end

end

、(関連する場合)および.urlsを格納するテーブルを作成しました。今はプロファイル ページしかありませんが、将来的にはきれいな URL を持つさまざまな種類のページを作成する予定です。slugidtype of page

私の最初の質問:

1) この実装は正しいアプローチですか? テーブルにすべての適切なインデックスがある場合、パフォーマンスの観点からこれは問題ありません。

私はこのようなプロファイルのURLを作っています:

    def self.makeProfileUrl(id,name)

     name = name.strip.titleize

     extension = User.where(:name => name).count - 1

     slug = name.split(" ").join("-")

     if extension != 0
        slug += "-#{extension}"
     end

        Url.create(:slug => slug, :id => id.to_i, :url_type => 'profile')

   end

同じ名前を共有するユーザーの場合に備えて、拡張機能を使用してカウントを追加しています。

質問:

これはスラッグを作成し、それが一意であることを確認する正しい方法ですか? 他のテーブルから名前の数を取得するのは正しくないようです。

4

1 に答える 1

1

質問 1 への回答:

全体的な目標の詳細はわかりませんが、データベースのレコードに基づいた URL が必要な場合は、そうです。これは良いアプローチです。

質問 2 への回答 (ナメクジに関して):

https://github.com/norman/friendly_idのように、もっと精巧で十分にテストされたものを使用したいと思い ます。

他のいくつかのことについての私の50セント:

これは Ruby/Rails での最初のプロジェクトの 1 つですか? もしそうなら - おめでとう!:) あちこちでキャメルケースを使っていることに気がついたので聞いています...

また:

user_id = url.id.to_i

なぜここで #to_i メソッドを呼び出すのですか? この ID を文字列か何かとして設定しましたか?

お役に立てれば

于 2013-10-22T07:30:52.053 に答える