Rubyでstringの文字数を調整したり、部分的に取り出したりする
Rubyでstringの文字数を調整したり、部分的に取り出したりする方法です。
使用用途として外部のサービにデータを渡す時など、文字数に制限がかっかていたりすので、 その仕様に合わせて文字数を調整する方法です。
先頭から5文字取得する
先に実際のサンプルは以下になります。
number = "1234567890" number[0, 5] => "12345"
大事なところは、
number[0, 5]
です。
number[index, len]
となって
index => 何番目の文字から取得開始するか len => 何文字取得するか
number[0, 5]
の場合だと、
0番目から、5文字取得する
となります。
同じ雰囲気を出しながら
number[0..5]
とやると、
=> "123456"
6までとれてしまうので注意が必要です。
上記のパターンだとインデックスで0番目から5番目まで取得することになるので6文字取得することになります。
number[0, 5]
と同じことをするのであれば
number[0..4]
になります。
文字列の途中から5文字取得する
基本的にはこれを使えば問題なしです。
number[index, len]
インデックスで3番目から5文字取得しようとすると下記の様になります。
number = "1234567890" number[3, 5] => "45678"
後ろから5文字取得する
後ろから取得する場合も、以下が使えます。
number[index, len]
後ろから5文字取得する場合は、
number = "1234567890" number[-5, 5] => "67890"
indexのところで、マイナス値(-5)を設定します。 後ろから5番目から5文字取得しますという感じになります。
関連記事
- 作者: Rubyサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2017/05/17
- メディア: 大型本
- この商品を含むブログ (1件) を見る
Railsのenumで値(Value)を取得する
下記のようなenumがあったときに、
class Item < ActiveRecord::Base enum status: { draft: 1, published: 2, test: 3 }
Imteオブジェクトから Valueの値(1 とか 2 とか)を取得したい時の方法です。
hash的な考え方
まず1つ目が、
Item.statuses[item.status]
です。
hashみたいにkeyを指定して、valueを取得します。
その際に、statuses と複数系になることにご注意ください。
xxxx_before_type_castを使う
なにはともあれ、下記で取得できる。
Item.status_before_type_cast
こちらの方が、スマートな雰囲気で取得できますね。
ActiveRecord::AttributeMethods::BeforeTypeCast
関連記事
Ruby on Rails 5アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2017/04/14
- メディア: 大型本
- この商品を含むブログを見る
検索でのランディングページを確認する方法
Googleアナリティクスで、検索でどんなページがランディングしているか確認する方法です。
まず、Googleアナリティクスを開いて
[集客] > [Search Console] > [ランディングページ]をクリックします。
そうすると、ランディングページの一覧を確認することができます。
ランディングページの結果ページで考えること
まず、ランディングページの結果を何のためにみるのか?です。
そもそも、ランディングページ(LP)なので、最初にアクセスしたページです。 つまり、Googleの検索や、メール、URLを直接入力して、どこかのページにランディングします。 そのページが、ランディングページです。
そして、サイトやページにはきっと何かしらの目的があると思います。
- 自社の商品を買ってもらうことや
- 申し込みをしてもらうこと
- 自社の商品を知ってもらうこと
それぞれあると思います。
そのランディングしたページから、目的を達成するための導線をつなげることが ランディングページを分析する、目的だと思います。
基本的な事かもしれませんが、これを意識するかしないかは大きなことだと思います。 まずはこのことを意識してみてください。
ある目的を持ったページ、ちゃんと目的に向かった誘導できているのか?
言い換えれば
ある商品の購入してもらうためのページが、ちゃんと購入に向けて誘導できているのか。
これを意識すると、
購入だけがゴールではなく、 ちゃんと商品のことを説明しないといけないとか、 自社のことを信頼してもらえないといけないとか、 購入後もサポートがちゃんとあって安心してつかえることを知ってもらえないといけないとか
いろいろな、改善点が見えてくるのではないでしょうか?
関連記事
できる逆引き Googleアナリティクス Web解析の現場で使える実践ワザ240 ユニバーサルアナリティクス&Googleタグマネージャ対応
- 作者: 木田和廣,できるシリーズ編集部
- 出版社/メーカー: インプレス
- 発売日: 2015/03/19
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
Railsのmeta-tags gemで og:image:widthと og:image:heightを設定する
タイトルの通りですが、Ruby on Rails でSEO系のタグをいい感じに設定が出来る meta-tags のgemを使って、og:image:widthと og:image:heightを設定する方法です。
meta-tags gemは以下です。
で。
そもそも、なんで、og:image:widthと og:image:heightを設定するかと言えば
Facebookでページをシェアする際に、はじめてのページだと画像が一発で表示されないんです。 その対応として、以下の方法があるようです。
- シェアデバッガーを使用して画像をプリキャッシュする
- og:image:widthおよびog:image:height Open Graphタグを使用する
です。
公式はこちら
ベストプラクティス - シェア機能 - ドキュメンテーション - 開発者向けFacebook
最初のシェアデバッガーを使用して画像をプリキャッシュするというのは、 がっつり手作業なので却下です。
以下のページが、URLを入力して、「取得」みたいなボタンを押すイメージです。
もう一つの
og:image:widthおよびog:image:height Open Graphタグを使用するは、タグを設定しておけば 良しなにはからってくれそうなので、こちらを採用します。
書き方
そして、ココからが本題のコードの書き方です。
最初に書きます。
- set_meta_tags ({title: 'タイトル', description: 'デスクリプション', og: {image: {_: 'https://example.com/aaaa.jpg', width: 1200, height: 630}}})
です。
一番の肝心なところは、
_:
imageにhashで指定するんですが、 画像のURLのkeyを
_ (アンバーバー)
にしないといけないんです。
そうなんですね。ぐらいの感想しかでない感じです。
なにはともあれ、_ (アンバーバー)を使ってください
そうすると。
<meta property="og:image" content="https://example.com/aaaa.jpg" /> <meta property="og:image:width" content="1200" /> <meta property="og:image:height" content="630" />
と出力してくれます。
関連記事
- 作者: 瀧内賢
- 出版社/メーカー: 秀和システム
- 発売日: 2017/03/04
- メディア: 単行本
- この商品を含むブログを見る
Ruby on Railsで UTCの時間をJSTに変換する。
例えば
logined_atにUTCの時間が入っているとして、
p logined_at # 2017-06-29 02:26:41 UTC
この logined_atをJSTで表示したいとき
in_time_zone('Tokyo')
を使います。
p logined_at.in_time_zone('Tokyo') # Thu, 29 Jun 2017 11:26:41 JST +09:00
Ruby on Rails 関連記事
Ruby on Rails 5アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2017/04/14
- メディア: 大型本
- この商品を含むブログを見る
RailsのActiverecordeで既についているNot null制約を外す
ActiverecordeでカラムにNotNull制約をつけてしまったけど、 やっぱり、NotNull制約を外したいなんて時ありますよね。
そんな時は、
change_column_null
マイグレーションファイルを下記の用になります。
class ChangeNotNulToUser < ActiveRecord::Migration[5.0] def up # Not Null制約を外す(NULLがOK) change_column_null :users, :name, true end def down # Not Null制約を付ける(NULLがNG) change_column_null :users, :name, false end end
change_column_null [テーブル名], [カラム名], [true|false]
要件が変わってしまここともあるので、仕方ないですが。 そもそも、こういう変更はなるべくしないようにしたいですね。 ちゃんと設計しなさいですね。
関連記事
- 作者: Rubyサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2017/05/17
- メディア: 大型本
- この商品を含むブログ (1件) を見る
参考サイト
change_column_null (ActiveRecord::ConnectionAdapters::SchemaStatements) - APIdock
Rails simple_formatの勝手につく<p>タグを削除したい
Railsのsimple_formatを使うと勝手に
タグで囲まれます
- text = 'aaaaa' = simple_format(text)
みたいにすると
<p>aaaa</p>
と出力されます
そんな時に、
<p> => <div>
にしたい時は
- text = 'aaaaa' = simple_format(text, {}, wrapper_tag: "div")
とすると。
<div>aaaa</div>
にたいになります。
小さく無駄にハマるまえにドキュメントみないとですね。
参考サイト
simple_format (ActionView::Helpers::TextHelper) - APIdock
関連記事
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2016/12/17
- メディア: 単行本
- この商品を含むブログを見る