[HOWTO] 5 Steps Let Your EC Website Applying GA E-commerce Using Ruby on Rails

這篇你會知道如何在 Rails 加上 GA E-commerce的 code

基本上就是參考GA- Ecommerce Tracking - Web Tracking (analytics.js)

google 是建議 GATC(google analytic tracking code)可以埋在當使用者完成交易後的感謝頁面

所以,我也是加上訂單created 後的動作,

就讓我們開始吧!

Read on →

[HOWTO] 跳出視窗,內含動態選單

屁話區:

最近要準備開發比較user friendly的後台,於是乎,想到這樣的功能,

於是,我拿了之前開發過的專案來試玩看看~~ 快來看一下中間的眉角~(ps.其實也沒有什麼眉角…都是g來的XDDDD)

需求描述:

使用者希望點選”編輯”後,直接popup編輯視窗,裡頭還包含了動態表格

More specific, 來個簡單使用者情境:

後台管理人員,需要幫其中一張訂單,加購商品

加購商品跳出視窗

就讓我們繼續看下去….這崮中有什麼訣竅~~~~

Read on →

[閱讀筆記系列] 23 + 1 設計模式 - Part4. 工廠方法(Factory Method)

重點在於

將建立物件的程式碼集中在一個物件或行為中,可避免程式碼重複,方便以後修改

你是否常需要建立某個object,但是這個object內容卻時常需要變化,但是又很類似

之前的閱讀筆記(懶惰版)

Comments

如何動態管理權限-使用cancan

這篇是參考自Dynamic roles and permissions using cancan

大概分成幾個流程:

  1. 建立Gemfile
  2. 建立需要的Model
  3. 寫rake爬controller的action(懶惰專用,不想要資料庫一個一個建權限)
  4. 設定Ability => 這邊是關鍵,他會去抓user的role底下的權限
  5. 設定Controller => 用來擋權限,設定權限
  6. 設定route
  7. 建立View

前言

網站後台往往可能有多個員工進去作業,但是有些功能並不希望開放給低層級的員工使用,

所以後台也需要做權限管理~

但是人員進進出出,陞遷、轉職相對應的職務也會調整,總不能每次都要去改hard code吧~~

所以才有動態權限設定的需求!

Step 1. Gemfile

因為我們要使用Railscast網站開發者兼Boss Ryanb寫的cancan,提供權限管理的服務

[手做] 所以,要在Gemfile寫入

gem 'cancan'

[手做] 在terminal執行

bundle install
Read on →

CSV匯入中文編碼問題

情境ㄧ:若是使用者(window平台)先從自己系統download資料,之後要再匯入

對於CSV檔案本身解決方法….

=> 請他先用google drive 上傳他的CSV檔,再從google抓下來

程式端醜陋的解法

def import(file)
  csv_text = File.read(file.csv_textpath)
  begin  
    csv_text_new = Iconv.conv('utf-8','big5',csv_text) #若是使用者使用自己excel轉csv匯入
  rescue  
    #do nothing just keep going
    csv_text_new = csv_text #使用者使用google線上轉換下來的csv
  end 
  csv = CSV.parse(csv_text_new, headers: false, quote_char: "\x00", col_sep: "\t")
  header = csv.first.first.split(',')
  counter = 0
  csv.each do |row|
    unless counter == 0
      row = Hash[[header,row.first.split(',',header.count)].transpose]
      order = where(order_no: row["order_no"]).first
      if order.present?
        order.attributes = row.to_hash
        order.save!
      else
        Order.create!(row.to_hash)
      end
    end
      counter+=1
  end
end

情境二 若是使用者直接拿外部產生的csv要匯入的話

def importingrt(file)
  CSV.foreach(file.path, :headers => true, :col_sep => ',',encoding:'Big5:utf-8') do |row|
      order = where(order_no: rescueow["系統訂單編號"]).first
      if order.present?
               if row["訂單狀態"] == '已出貨'
          order.ship!
            end
      else
        #do what you want
      end
    end

附錄:Ruby 的編碼清單

Encoding.list.map {|a| a.name}

=> [“ASCII-8BIT”, “UTF-8”, “US-ASCII”, “Big5”, “Big5-HKSCS”, “Big5-UAO”, “CP949”, “Emacs-Mule”, “EUC-JP”, “EUC-KR”, “EUC-TW”, “GB18030”, “GBK”, “ISO-8859-1”, “ISO-8859-2”, “ISO-8859-3”, “ISO-8859-4”, “ISO-8859-5”, “ISO-8859-6”, “ISO-8859-7”, “ISO-8859-8”, “ISO-8859-9”, “ISO-8859-10”, “ISO-8859-11”, “ISO-8859-13”, “ISO-8859-14”, “ISO-8859-15”, “ISO-8859-16”, “KOI8-R”, “KOI8-U”, “Shift_JIS”, “UTF-16BE”, “UTF-16LE”, “UTF-32BE”, “UTF-32LE”, “Windows-31J”, “Windows-1251”, “IBM437”, “IBM737”, “IBM775”, “CP850”, “IBM852”, “CP852”, “IBM855”, “CP855”, “IBM857”, “IBM860”, “IBM861”, “IBM862”, “IBM863”, “IBM864”, “IBM865”, “IBM866”, “IBM869”, “Windows-1258”, “GB1988”, “macCentEuro”, “macCroatian”, “macCyrillic”, “macGreek”, “macIceland”, “macRoman”, “macRomania”, “macThai”, “macTurkish”, “macUkraine”, “CP950”, “CP951”, “stateless-ISO-2022-JP”, “eucJP-ms”, “CP51932”, “EUC-JP-2004”, “GB2312”, “GB12345”, “ISO-2022-JP”, “ISO-2022-JP-2”, “CP50220”, “CP50221”, “Windows-1252”, “Windows-1250”, “Windows-1256”, “Windows-1253”, “Windows-1255”, “Windows-1254”, “TIS-620”, “Windows-874”, “Windows-1257”, “MacJapanese”, “UTF-7”, “UTF8-MAC”, “UTF-16”, “UTF-32”, “UTF8-DoCoMo”, “SJIS-DoCoMo”, “UTF8-KDDI”, “SJIS-KDDI”, “ISO-2022-JP-KDDI”, “stateless-ISO-2022-JP-KDDI”, “UTF8-SoftBank”, “SJIS-SoftBank”

Comments

[HowTo] Setup Sunspot in Rails 4 and Deploy to Ubuntu12.04 Using Capistrano 3

[HOWTO] Setup Sunspot in Rails 4 and Deploy to Ubuntu 12.04 using

Capistrano3.

最近利用空閒時間,練習自己架設一個購物網站,其中,我想說一般網站都會有搜尋的功能,

如果在後台,可以使用Ransack來實作,但是那是給管理者搜尋某些表相關欄位所使用,

換句話說,在訂單的table中,你可以使用Ransack搜尋,建立每一個獨立欄位搜尋input,或是建立和這訂單table相關的每個獨立欄位的搜尋input

但是,如果想要在網站建立一個搜尋引擎,該要怎麼做?

搜尋引擎是只要輸入一個資料,你就可以搜尋到搜尋不同欄位,

我查了The Ruby toolbox,第一名被使用的就是Sunspot: https://github.com/outoftime/sunspot !

於是乎,就來try and error吧

Read on →
Google Analytics Alternative