質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

1163閲覧

RailsでArrayクラスを拡張したのですが、それをviewで使う方法をご教授ください

begincode

総合スコア10

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/12/21 00:43

お世話になります。

現在、RailsでArrayクラスに以下のようなメソッドを追加しました。
(追加先は/lib/core_ext/array.rb)

class Array def each_with_prevsucc each_index do |i| prev = (i - 1 < 0) ? nil : self[i - 1] item = self[i] succ = (i + 1 >= size) ? nil : self[i + 1] yield(prev, item, succ) end end end

modelメソッドやmodule内では動いているのですが、viewファイルで使おうとしたらno method error(undefined method `each_with_prevsucc' f)になってしまいます。

拡張したクラスメソッドをviewでは使えないのでしょうか。またもし使えるようになる手法がありましたらご教授願えれば幸いでございます。
どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

そもそも、自分で拡張しなくても、ほぼ同等の機能としてEnumerable#each_consがあります(るりま)。

投稿2018/12/21 00:47

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2018/12/21 00:50

なお、ビューで使えないのは、Arrayではないものに適用していることが考えられます。.to_aで本物の配列に変換してみてください。
begincode

2018/12/21 01:04

to_aで解決しました。かなりスタックしていたので助かりました。ありがとうございました。 もしよろしければで結構なのですが、なぜviewだけto_aで配列に変換しないといけないのかをご教授いただけますでしょうか? modelやmoduleでは動いていたので不思議なものでして。
maisumakun

2018/12/21 01:07

書いてのとおり、modelやmoduleでは本物のArrayに適用していただけなのではないかと思います。
begincode

2018/12/21 01:12

早々のご返答ありがとうございました。 かしこまりました。大変勉強になりました。 ぜひ今後ともご教授のほどよろしくお願い申し上げます。
sakuro

2018/12/21 10:40 編集

たとえば User has_many :tweets のような時、コントローラーで user = User.find(params(:id)) @tweets = user.tweets とした場合、 `@tweets` は Array ではなく、動的に作られる ActiveRecord::Relation のサブクラスだったりしますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問