開発環境
・Rails v4.0.0
・Ruby v2.0.0p195 (2013-05-14) [i386-mingw32]
■ 論理削除をする用のGem
使用Gem:kakurenbo
インストール
gem install "kakurenbo"
で最初はインストールしました。よろしくなかった。
『最新版入れたのに動かない!?』ってなりました。Bundleを使う方法でインストールし直しても動かず。
結論
* 自分のRailsのバージョンとkakurenboのバージョンが合ってませんでした。
* gem installで入れた後にBundleで入れたので、2つのバージョンが入っている状態になっていました。
ので、一旦 gem uninstall kakurenbo
でアンインストした後にBundleで入れました。
対応するバージョンが入ってくれたよかった^^
サーバー再起動しないと反映されなかったりするようですね!なるほど!
論理削除処理
getで削除対象idを渡しているので、そのまま検索条件にセットして、
”kakurenbo”の関数.destroy_all
で論理削除しています。
私はRails4.0.0なのでこの書き方で問題ありませんが、Rails4.0.2では
導入する"kakurenbo"のバージョンが違うので書き方が異なります!
これは 本家様のHP にて確認してください。
def delete
if MUser.where(:id => params[:user_id]).destroy_all
redirect_to :m_users, notice: '削除しました。'
else
redirect_to :m_users, notice: '削除に失敗しました。'
end
end
リストア
def restore
MUser.restore(params[:user_id])
redirect_to :m_users
end
モデル名.restore(レコードid)
のみ!簡単にかけますね!
■ ページング用のGem
使用Gem:kaminari
参考サイト:Railsライブラリ紹介-ページングを行う「kaminari」
Kaminariで超お手軽にページネートを実装する。
インストール
Gemfileにgem "kaminari"
を追加し、コマンドプロンプトからbundle install
で問題なく追加されました。
ページング処理
データ取得
モデル名.page(ページ数).order(ソート対象項目)
ひとまず自分はこれだけで。.per(表示件数)
など他にもオプションがあるようです。
def index
if params[:page].nil?
$page = 1
else
$page = params[:page]
end
@m_users = MUser.page($page).order(:id)
end
デフォルト設定
モデルや設定ファイル( rails generate kaminari:config
で生成される )で表示件数などのデフォルト設定ができる。
5| # デフォルト表示件数
6| paginates_per 5
7|
ビューにページングリンクを生成
リンクを表示させたい位置に<%= paginate(データの入った配列) %>
を記載するだけ。
<div><%= link_to "登録", {:action => "add"} %></div>
<table>
<th>ID</th>
<th>名前</th>
<% @m_users.each do |m_user| %>
<tr>
<td><%= m_user.id %></td>
<td><%= m_user.user_name %></td>
<td><%= link_to "編集", {:action => "edit", :user_id => m_user.id} %></td>
<td><%= link_to "削除", {:action => "delete", :user_id => m_user.id} %></td>
</tr>
<% end %>
</table>
<%= paginate(@m_users) %>
おまけ? 日本語化
config/locales/ja.yml
を作成して、以下のように設定しました。
ja:
views:
pagination:
first: "«"
last: "»"
previous: "‹"
next: "›"
truncate: "..."
helpers:
page_entries_info:
one_page:
zero: "<string>該当データがありません</string>"
one: "<string> - 1/1 - </string>"
display_entries: "<string> - %{entry_name}/%{count} - </string>"
more_pages:
display_entries: "<string> - %{entry_name}/%{count} - </string>"
lang:config/application.rbに‘config.i18n.default_locale = :ja‘と設定する。
9| module RorProject
10| class Application < Rails::Application
11| config.i18n.default_locale = :ja
12| # config.i18n.load_path = Dir[Rails.root.join('config', 'locales', '').to_s]
自分の環境では
« ‹ 1 2 3 › »
という形で表示されるようになりました^^
■ Bootstrapを扱うためのGem
※はじめに言っておきます。私はまだ成功してません。
使用(したかった)Gem:Twitter Bootstrap
一度お世話になったことのあるBootstrapさん。デザインをあまり考えなくていいなと思い、
Gemを入れようとしましたが。。。。
gem "therubyracer"
gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS
gem "twitter-bootstrap-rails"
この3行をGemfileに追記して・・・?
therubyracer
はもともとGemfileに記載がありましたがコメントアウトされていました。
まあ、そのまま追記してbundle install
したわけですが、『therubyracer
がインストールされてない!?』
追記したgem "therubyracer"
の方をコメントアウトして、もともと記載されていた
# gem 'therubyracer', platforms: :ruby
のコメントアウトを外してbundle install
してもダメ。
ここのサイト様によると、therubyracer と libv8というGemを正しくいれておかないといけないようですた。ここのページを参考に下記の用にコマンドでインストール
gem install libv8 -v '3.11.8.17' -- --with-system-v8
libv8はうまくインストールできました。
therubyracer
はこちらのサイト様によるとWindowsはサポートして無いだとか。
同じサイト様に記載されている方法で試してみました。
windows用のGemをダウンロード
ダウンロードしたファイルをアンパック
gem unpack XXXXXXXXXXXXXXXX
Gemfileに下記の記述を追加して、bundle install
gem 'therubyracer', :path => 'therubyracer-0.11.0beta1-x86-mingw32'
インストールできた!!
あちこち解決を探し回ってやっと・・・これで使えるのかな!!
が、サーバーが起動しなくなりました。orz
もう私のライフは0です。(訳:後で頑張ります)
-- ある程度追加していく予定です。 --