読者です 読者をやめる 読者になる 読者になる

ちーくんのブログ

プログラミング備忘録

RailsにURLを貼って別サイトに飛ぶ

こんにちは。本日はRailsでURLを貼るときにハマったことについてです。

Railsでサイトから別のサイト(公式サイトなど)に飛ぶみたいなのを実装したいなと思っていたのですが、ちょっと手こずりました。。

誰かの役に立てればと思い共有したいと思います。

はじめに

現在個人的に創って運用しているRopaRopa(ロパロパ)というサイトがあるのですが、そこに各店舗のWebsiteに飛ばしたいなと思いました。

ropa-ropa.com


chi-kun.hatenablog.com


店舗詳細画面の表。

f:id:chi_kun:20161213165154p:plain


(今回は例としてYahoo!に飛びます。)


普通の場合

まずはURLを収めるカラムをつくります。

$ rails g migration add_url_to_shops url:string
$ rake db:migrate


※ここで注意なのですが、もしURLが長くなる場合は、string型ではなくtext型を使用したほうがいいです。


それで

@shop.url 

みたいにすれば至れり尽くせりなRailsが自動でurlを貼ってくれるのだと思い込んでいましたが、ただのテキストなんですよね。。(今思えば当たり前ですが。。)


なので

<%= link_to @shop.url, :target => "_blank" %>

みたいにして別のウインドウで開くようにしました。


がしかし。。


これでイケると思ったのですが、リンクが飛ばない。。


なので名前を指定してあげたら一応リンクには飛びました。

<%= link_to "公式サイト", @shop.url, :target => "_blank" %>


とりあえず他リンクには飛ぶタスクはこれでOK。


http(s)://www.・・・みたいにしたい

上記で一応目的は達したのですが、「文字列」ではなく「http(s)://」みたいな感じにしたい。

<%= link_to @shop.url, @shop.url, :target => "_blank" %>


第一引数にdbに入っているurlの文字列、第二引数に飛びたいurl、オプションという形にした。


同じコードが重複していてちょっと個人的に違和感があるのですが。。


これでいいのかな?

もっときれいにコードかけるよという人教えてほしいです。



本日は以上です。