Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

RubyOnRailsでGemを入れてみた

More than 5 years have passed since last update.
開発環境
・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 にて確認してください。

m_users_controller.rb
  def delete
    if MUser.where(:id => params[:user_id]).destroy_all
      redirect_to :m_users, notice: '削除しました。'
    else
      redirect_to :m_users, notice: '削除に失敗しました。'
    end
  end

リストア

m_users_controller.rb
  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(表示件数)など他にもオプションがあるようです。

m_users_controller.rb
  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で生成される )で表示件数などのデフォルト設定ができる。

models/m_user.rb
5| # デフォルト表示件数
6| paginates_per 5
7| 

ビューにページングリンクを生成

リンクを表示させたい位置に<%= paginate(データの入った配列) %> を記載するだけ。

views/m_users/index.html.erb
<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を作成して、以下のように設定しました。

config/locales/ja.yml
ja:
  views:
    pagination:
      first: "&laquo;"
      last: "&raquo;"
      previous: "&lsaquo;"
      next: "&rsaquo;"
      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‘と設定する。

config/application.rb
 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です。(訳:後で頑張ります)

-- ある程度追加していく予定です。 --

iotlt
IoT縛りの勉強会です。 毎月イベントを実施しているので是非遊びに来てください! 登壇者を中心にQiitaでも情報発信していきます。 https://iotlt.connpass.com
https://iotlt.connpass.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away