2017-01-29 20 views
1

URLにレコードのIDと名前があります。パラメータ化されたURLをリダイレクト

def to_param 
    "#{id} #{name}".parameterize 
end 

ただし、任意の名前がURLで機能します。私は、次の操作を行うことができますし、私がID-nameID-anythingをリダイレクトするにはどうすればよい

www.site.com/records/ID-anything-here-works 

に動作しますか?

ここは例です。

「製品」モデルと名前が「靴」で、IDが「6」のレコードがあるとします。

urlがこの

products/6-shoe 

のように見えます。しかし、このURLはまた、2番目のURLは、最初にリダイレクトよう

products/6-eiufwojfeowjfowef 

がどのように私はそれすることができます動作しますか?

def show 
    @website = Website.find(params[:id]) 
    unless params[:id] == @website.to_param 
     redirect_to @website, status: 301 
    end 
    end 

はそれはそれは(名前の過失)今やっているようインスタンスを見つけたが、それはリダイレクト:

def show 
    @website = Website.find(params[:id]) 
end 
+0

私はあなたの質問を理解していません。あなたはそれを言い換えることができますか? – BKSpurgeon

+0

私はあなたが意味することを理解していると思います。データベースに現在存在する名前を入力するだけですか? – BKSpurgeon

+0

レコード名とレコードIDがデータベースにあります。 IDと名前をURLに入れておきたいと思います。しかし、レコードはIDだけで検索されているようですが、URLの名前に必要なものを入力してレコードを表示できます。 ID-nameにリダイレクトしたい。 – colmtuite

答えて

1

はこれを試してみてください:

私はshowアクションで働いていますユーザーを現在の名前で正しいパスに移動します。

リダイレクトの301ステータスに注意してください。これはSEOに適しています。各ウェブサイトには実際のURLが1つしかありません。

関連する問題