Shopify - お客さんに見えないようにline_item_properitesをorder時に付与する
main-product.liquid の
```
{%- form 'product', product, id: product_form_id, class: 'form', novalidate: 'novalidate', data-type: 'add-to-cart-form' -%}
<input type="hidden" name="id" value="{{ product.selected_or_first_available_variant.id }}" disabled>
```
の下に
`<input type="hidden" name="properties[_Custom]" value="This is the value of the property 'Custom'">`
を加えれば良い。
propeties[_Custom]の_がついていると、order時に表示されない。
参考にしたサイト
Railsのフォームでajaxでメソッドを叩いて値を更新する
なんて書けば良いのかわかんないけど、
Railsでつくったフォームの入力値をとってきて、
(フォームは送信せず)
なんかメソッドたたいて、返って来た値をつかって
フォームを更新する、みたいなことがやりたかった。
すごい簡単にいうと、インターネット上で住所入力するとき、
郵便番号いれて、住所がぱぱっと入力されるみたいなやつが
やりたかった。
メソッドも自分でつくります。
フォームの値をとってくる
これはJSでできる!
Railsは適当にJS読み込んでくれるので、
そこに書く。
ここを参考にした。
<%= f.text_field :url%>
というフォームがもともとあって、
<%= f.text_field :url , :id => 'url' %>
こんな感じで書くとよい。
idを指定するだけではうまくいかなかったので、
getElementByIdをつかった。
alertまたはconsole.logで確認しておく。
メソッドの準備
メソッドのルーティングをしておく。
getメソッドにする。
クエリで受け取るので、その変数をurlとすると、
params[:url]でメソッド側から受け取れる。
処理を書いて、最終的にテキストで今回は出すので、
render text:"テキスト"
と書いておく。
メソッドがちゃんと動作するか、
直接叩いて確認しておく。
~/メソッドのroute?url=hogehoge
のようにブラウザに入れて、"テキスト"がページに出ればOKです。
このときparams[:url]はhogehogeになります。
【参考にしたページ】
Railsでレスポンスを返すメソッドについての簡単勉強メモ - light log
実はここが一番つまったところ。
Ajax処理を書く
フォームはそのまま送信せず残しているので、
Ajaxでメソッドを叩きます。上でかいているJSの続きに書けばOKです。
$.ajax({
type: "GET",
data: 'url=' + url_string,
success: function(data) {
成功したときの処理
},
error: function() {
失敗したときの処理
}
という感じにかきます。これは上のメソッドで受け取る形にあわせているので、
dataのところは自分の好きなようにしてください。
url_stringは最初のJSで取得したデータを入れている変数です。
ajaxでtypeをGETにすると、クエリでうまく渡せるようです。
上でrenderにしたテキストをsuccessのdataで受け取れます。
【参考にしたページ】
ダメ男のブログ: Ruby on Rails3でlink_toでAjax処理
最後にJSで値を入れる
successのdataにメソッドからrenderで指定した値がはいっているので、
最後にまたgetElementByIdで値をいれます。
ちょっと時間がかかるので、ぐるぐるなんかだせるといいですねー
Ruby on Rails ~もくもくAjax~
初めてKyoto.rbに参加しました。
前回のdeviseの導入のつづき、
Railsのログイン認証gemのDeviseのカスタマイズ方法 - Rails Webook
をやった。
日本語ローカライズのリンク切れだったので、
第15回: Devise によるユーザー認証機能の日本語化(1) - Ruby on Rails 3.0 日記 - Ruby on Rails with OIAX
ここからもらった。
あとURLからページのタイトルを取得したくて、
Nokogiri を使った Rubyスクレイピング [初心者向けチュートリアル] - 酒と泪とRubyとRailsと
nokogiriなるものを導入。
これをajaxつかってページに表示させたい、というところでタイムオーバー。
1.5h一瞬だった。
Ruby on Rails ~devise奮闘編~
Ruby on Railsはじめました
細かいことはさておき。
ログイン認証"devise"をいれる!
Railsの一番人気のログイン認証gemのDeviseの導入方法 - Rails Webook
これやってます。
まずひっかっかったの。"bundle install"すると、
Could not find gem 'device (>= 0) ruby' in the gems available on this machine.
これは、gemfileに"device"とかいていたせいでした…
つぎ。
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
creating Makefile
make "DESTDIR="
xcrun: error: active developer path ("/Applications/Xcode 2.app/Contents/Developer") does not exist, use xcode-select to change
Gem files will remain installed in /var/folders/7c/mxb436gn589f9d6dz7bfq7z80000gn/T/bundler20150301-11365-1boopry/bcrypt-3.1.10/gems/bcrypt-3.1.10 for inspection.
Results logged to /var/folders/7c/mxb436gn589f9d6dz7bfq7z80000gn/T/bundler20150301-11365-1boopry/bcrypt-3.1.10/gems/bcrypt-3.1.10/ext/mri/gem_make.out
これに関しては、
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
することで解決。
さらに、"rake db:migrate"で失敗。
エラーメッセージは
rake aborted!
NoMethodError: undefined method `devise' for User
こんなかんじ。
これは、
rails generate devise:install
することで解決した。
db:migrateすると、railsの再起動が必要らしいので、
再起動してやると、先のページのようなログイン機能が実装されました!
PHPアプリをHerokuにデプロイできた!
の続き。
何が問題だったかというと、logをみたら解決した。
logの見方は
heroku logs
でOK,
Call to undefined function mb_detect_encoding() in hoge.php on line 93
ってかいてあったので、"mb_detect_encoding() heroku"を調べると、
Heroku: PHP Fatal error for valid function - mb_check_encoding - Stack Overflow
"mbstring"をいれるべし、ということなので、
"mbstring heroku"で検索。
こちらを参考にさせてもらって、
{
"require": {
"ext-mbstring": "*"
}
}
をcomposer.jsonに書いた。
次に、またlogがエラーはいていた。
Call to undefined function imagecreatetruecolor() in hoge.php on line 16
だそうで、"imagecreatetruecolor()"はGDだな、ということがピンときて、
composer.jsonに
{
"require": {
"ext-mbstring": "*",
"ext-gd": "*"
}
}
こんな感じで追記。
やっとうまくいきましたー!!!
iConpeito - iPhone/iPad icon maker
こちらが、今回アップしたものです!!!
やった〜〜〜