1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【rails】GEM simple_calenderで「undefined method `start_time'」エラーが出たときの対処法

Posted at

#概要

 ポートフォリオ作成時に、RailsのgemであるSimple Calendarを使用しまして、その際に以下の記事を参考にさせていただきました。

https://qiita.com/isaatsu0131/items/ad1d0a6130fe4fd339d0
https://qiita.com/AKI3/items/109d54a35c98328d9155

 しかし、undefined method `start_time'のエラーに遭遇し、解決までかなり時間を要してしまいましたので、同じ症状の方がいらっしゃれば、と思い投稿します。

#開発環境
Rails 5.2.5
ruby 2.6.3p62

#遭遇したエラー
 エラー内容は「undefined method `start_time'」です。エラー画面.png

 エラー内容自体はよくあるエラーだと思います。要するに「start_time」というメソッドはありませんぜ、という内容ですね。

 ここで悩んだ原因は、コードを見ていただけるとわかりますが、エラーの出ている31行目に「start_time」とは記載していないからですね。

 では、どこかにstart_timeがあるのか(特に、上記記事で拝見しました、「rails g simple_calendar:viewssimple」のコマンドで生成された4つのViewファイル)と思い調べてみましたがありません。

 このため、相当悩みまして、時間をかなり使いました。

#解決方法
 結論として、解決方法は

simple_calendarの公式Github(https://github.com/excid3/simple_calendar)

から得られました。

ReadmeのRendering Eventsの欄に、「start_time以外の名前の開始時刻属性を持つモデルがある場合、またはリレーションシップを介してアクセスする場合は、my_model.rbファイルでstart_timeメソッドを定義することで属性のエイリアスを作成でき、上記のように個別に指定する必要はありません。」(Google翻訳ママ)との記載があったため、ModelにStart_timeメソッドを作ればよい、ということがわかったのです。

 ただし、上記二つの記事にはこのような手順が記載されておりませんでした。なぜか。

 それは、この2つの記事では、作者様は時刻に関するカラムを、「start_time」の名前で定義されておられたからですね。
 このことから、「start_time」メソッドを定義する必要がなかったわけです。
 今回、私の場合はsimple_calenderを導入する前にすでにカラムを「start_at」の名前で定義しており(以下にコード)、それに気づかず、また、公式Githubもろくに見ずに実装しようとしたため、上記のエラーとなってしまった、というわけです。

def change
    create_table :events do |t|

・・・・・・・(略)・・・・・・・

      t.datetime :start_at

・・・・・・・(略)・・・・・・・

end

 解決したときのコードはこちらです。simple_calendarに表示させたい内容が入っているModelに、「start_time」メソッドを作成しています。

class Event < ApplicationRecord
  #以下を追記
  def start_time
    self.start_at #self.の後はsimple_calendarに表示させるためのカラムを指定
  end
end

 これで実装できました!
simplecalender完成.png

 以上、公式サイト・Github等はよく確認しましょう、と教訓になりました。
 また、この場を借りて、上記二つの記事の作者様に感謝いたします。大変参考になりました。導入等は上記記事を見られれば、問題なく実装できるかと思います。
 この他にもっとクールな解決方法をご存じの方は、ご一報いただけると幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?