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

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

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

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

Ruby on Rails 6

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

Q&A

解決済

1回答

772閲覧

Rails側でどのように書けば、Axiosのパラメーターを受け取れますか。

kento720

総合スコア30

Ruby

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

Ruby on Rails 6

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

0グッド

0クリップ

投稿2021/10/14 11:26

編集2021/10/14 11:30

お世話になります。

タイトルの通りなのですが、Rails側でパラメーターを正しく処理することができずに困っております。
Axios でパラメーターを送信できていることは確認済みです。

達成したいこと(代入したい値)

irb(main):008:0> Time.zone.today.beginning_of_month.to_time.to_datetime => Fri, 01 Oct 2021 00:00:00 +0900

Ruby

1start_month = Fri, 01 Oct 2021 00:00:00 +0900

上記のように月初めの Datetime を変数(start_month)に格納したいと思っています。
そして、そのようなことを、year=2021, month=10 などのような任意のパラメーターを投げることで実現させたいと思っています。

Axios でパラメーターを送信できていることは確認済みです。

Nuxt

1 created() { 2 this.$axios.$get(`/api/v1/calendar/`, { 3 params: { 4            year: 2021 5 month: 10 6 } 7 }).then((res) => { 8 console.log(res) 9 }) 10 },

Console

1GET http://localhost:3000/api/v1/calendar/?year=2021&month=10 500 (Internal Server Error)

私が書いた、間違っているコード

ruby

1// calendar.rb 2 3def set_start_month 4 start_month = Time.parse("%#{year}%"&"-"+"%#{month}%"+"-1").to_time.to_datetime 5end

parse内の "-1" は月初の日にちを指定しようとしています。ごめんなさい。下手なコードかと思います。

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

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

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

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

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

hoshi-takanori

2021/10/14 21:06

start_month = Time.parse("#{year}-#{month}-1").to_time.to_datetime で良いのでは。
winterboum

2021/10/14 23:27

/api/v1/calendar/ コントローラーのcodeを載せてください。 エラーはその1行では無いと思うので、全部載せてください。 consoleではそれだけ、だったら logを確認してください
kento720

2021/10/15 06:53

hosi-takanori 様、winterboum 様 コメントありがとうございます。お二方のコメントを参考にさらにコードを調べたところ解決にたどり着くことができました。
guest

回答1

0

自己解決

①コントローラーで params を使っていなかったこと

ruby

1// calendar_controller.rb 2 def index 3 @date = User.attendance(params[:month]) 4 end

②クラスメソッドではなく、インスタンスメソッドにパラメーターを渡していたため、以下のようにしてクラスメソッドに変える必要があったこと。

ruby

1// calendar_controller.rb 2def self.set_start_month 3

以上の2点が今回の原因でした。

投稿2021/10/15 06:53

kento720

総合スコア30

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問