ECのウェブ担当者のメモ

ECサイトを運営管理している、WEB担当プログラマのメモ

スポンサーリンク

Rubyでstringの文字数を調整したり、部分的に取り出したりする

f:id:jun9632:20171010101257p:plain

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文字取得しますという感じになります。

関連記事

marketing-web.hatenablog.com

marketing-web.hatenablog.com

改訂2版 パーフェクトRuby

改訂2版 パーフェクトRuby

Railsのenumで値(Value)を取得する

f:id:jun9632:20170809110202p:plain

下記のような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

関連記事

marketing-web.hatenablog.com

Ruby on Rails 5アプリケーションプログラミング

Ruby on Rails 5アプリケーションプログラミング

検索でのランディングページを確認する方法

f:id:jun9632:20170709143836p:plain

Googleアナリティクスで、検索でどんなページがランディングしているか確認する方法です。

まず、Googleアナリティクスを開いて

[集客] > [Search Console] > [ランディングページ]をクリックします。

f:id:jun9632:20170709141333p:plain

そうすると、ランディングページの一覧を確認することができます。

ランディングページの結果ページで考えること

まず、ランディングページの結果を何のためにみるのか?です。

そもそも、ランディングページ(LP)なので、最初にアクセスしたページです。 つまり、Googleの検索や、メール、URLを直接入力して、どこかのページにランディングします。 そのページが、ランディングページです。

そして、サイトやページにはきっと何かしらの目的があると思います。

  • 自社の商品を買ってもらうことや
  • 申し込みをしてもらうこと
  • 自社の商品を知ってもらうこと

それぞれあると思います。

そのランディングしたページから、目的を達成するための導線をつなげることが ランディングページを分析する、目的だと思います。

基本的な事かもしれませんが、これを意識するかしないかは大きなことだと思います。 まずはこのことを意識してみてください。

ある目的を持ったページ、ちゃんと目的に向かった誘導できているのか?

言い換えれば

ある商品の購入してもらうためのページが、ちゃんと購入に向けて誘導できているのか。

これを意識すると、

購入だけがゴールではなく、 ちゃんと商品のことを説明しないといけないとか、 自社のことを信頼してもらえないといけないとか、 購入後もサポートがちゃんとあって安心してつかえることを知ってもらえないといけないとか

いろいろな、改善点が見えてくるのではないでしょうか?

関連記事

marketing-web.hatenablog.com

marketing-web.hatenablog.com

できる逆引き Googleアナリティクス Web解析の現場で使える実践ワザ240 ユニバーサルアナリティクス&Googleタグマネージャ対応

できる逆引き Googleアナリティクス Web解析の現場で使える実践ワザ240 ユニバーサルアナリティクス&Googleタグマネージャ対応

Railsのmeta-tags gemで og:image:widthと og:image:heightを設定する

f:id:jun9632:20170630233130p:plain

タイトルの通りですが、Ruby on Rails でSEO系のタグをいい感じに設定が出来る meta-tags のgemを使って、og:image:widthと og:image:heightを設定する方法です。

meta-tags gemは以下です。

github.com

で。

そもそも、なんで、og:image:widthと og:image:heightを設定するかと言えば

Facebookでページをシェアする際に、はじめてのページだと画像が一発で表示されないんです。 その対応として、以下の方法があるようです。

  • シェアデバッガーを使用して画像をプリキャッシュする
  • og:image:widthおよびog:image:height Open Graphタグを使用する

です。

公式はこちら

ベストプラクティス - シェア機能 - ドキュメンテーション - 開発者向けFacebook

最初のシェアデバッガーを使用して画像をプリキャッシュするというのは、 がっつり手作業なので却下です。

以下のページが、URLを入力して、「取得」みたいなボタンを押すイメージです。

developers.facebook.com

もう一つの

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" />

と出力してくれます。

関連記事

marketing-web.hatenablog.com

marketing-web.hatenablog.com

これからのSEO内部対策 本格講座

これからのSEO内部対策 本格講座

Ruby on Railsで UTCの時間をJSTに変換する。

f:id:jun9632:20170629120557p:plain

例えば

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 関連記事

marketing-web.hatenablog.com

marketing-web.hatenablog.com

Ruby on Rails 5アプリケーションプログラミング

Ruby on Rails 5アプリケーションプログラミング

RailsのActiverecordeで既についているNot null制約を外す

f:id:jun9632:20170622101223p:plain

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]

要件が変わってしまここともあるので、仕方ないですが。 そもそも、こういう変更はなるべくしないようにしたいですね。 ちゃんと設計しなさいですね。

 関連記事

marketing-web.hatenablog.com

marketing-web.hatenablog.com

改訂2版 パーフェクトRuby

改訂2版 パーフェクトRuby

参考サイト

change_column_null (ActiveRecord::ConnectionAdapters::SchemaStatements) - APIdock

Rails simple_formatの勝手につく<p>タグを削除したい

f:id:jun9632:20170509110049p:plain

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

関連記事

marketing-web.hatenablog.com

marketing-web.hatenablog.com

Ruby on Rails 5 超入門

Ruby on Rails 5 超入門