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

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

ただいまの
回答率

87.60%

Rails パラメーターのデータを取得したい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 296

score 16

前提・実現したいこと

Ruby on rails で出勤管理表を作成しています
ビューファイルで月間の表を作成してコントローラーにモデルではないパラメーターで
送り出すまではできたのですが、そこからデータを取り出すことができません。
下記の通り、starttimeやfinishttimeの変数にデータが取り込めるようにしたく
ご指導願います。

発生している問題・エラーメッセージ

undefined local variable or method `items_params' for #<AttendanceController:0x007f1bfd7e5f20>

該当のソースコード

{"utf8"=>"✓",
 "authenticity_token"=>"C5BXkOe46W+7mRkETFrgYawcupNaURZU0XoDy/UIbgkx17psFsLgF2uO6gk5uPgw5JGwyZ6O/FBUK9z4AcbvrQ==",
 "items"=>
  {"#<Staytime:0x007f1bfc291ca0>"=>{"id"=>"1", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfc28f180>"=>{"id"=>"2", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfc28c778>"=>{"id"=>"3", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfc289c30>"=>{"id"=>"4", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfc183048>"=>{"id"=>"5", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfc180668>"=>{"id"=>"6", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfc3854b8>"=>{"id"=>"7", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfc3829e8>"=>{"id"=>"8", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfc37ff90>"=>{"id"=>"9", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfc37d420>"=>{"id"=>"10", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfc37a400>"=>{"id"=>"11", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfcc4acb0>"=>{"id"=>"12", "dataid"=>"58", "starttime"=>"16:52:28.281", "finishtime"=>"17:15:35.212"},
   "#<Staytime:0x007f1bfcc8b418>"=>{"id"=>"13", "dataid"=>"59", "starttime"=>"07:41:12.188", "finishtime"=>"16:17:09.533"},
   "#<Staytime:0x007f1bfeb6fac8>"=>{"id"=>"14", "dataid"=>"61", "starttime"=>"10:54:57.400", "finishtime"=>"22:38:00.131"},
   "#<Staytime:0x007f1bfeb6ce18>"=>{"id"=>"15", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfeb62030>"=>{"id"=>"16", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfeb56cd0>"=>{"id"=>"17", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfcdc7778>"=>{"id"=>"18", "dataid"=>"62", "starttime"=>"21:00:40.864", "finishtime"=>""},
   "#<Staytime:0x007f1bfcdafe48>"=>{"id"=>"19", "dataid"=>"63", "starttime"=>"15:30:40.192", "finishtime"=>""},
   "#<Staytime:0x007f1bfcdac860>"=>{"id"=>"20", "dataid"=>"64", "starttime"=>"16:01:41.260", "finishtime"=>"22:19:19.909"},
   "#<Staytime:0x007f1bfeb44d00>"=>{"id"=>"21", "dataid"=>"65", "starttime"=>"12:03:00.000", "finishtime"=>"12:09:00.000"},
   "#<Staytime:0x007f1bfeb19678>"=>{"id"=>"22", "dataid"=>"66", "starttime"=>"08:13:00.000", "finishtime"=>"19:41:00.000"},
   "#<Staytime:0x007f1bfec19de8>"=>{"id"=>"23", "dataid"=>"67", "starttime"=>"08:26:00.000", "finishtime"=>"21:33:00.000"},
   "#<Staytime:0x007f1bfec066f8>"=>{"id"=>"24", "dataid"=>"68", "starttime"=>"06:36:00.000", "finishtime"=>""},
   "#<Staytime:0x007f1bfebfb1e0>"=>{"id"=>"25", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfebf80f8>"=>{"id"=>"26", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfd040f40>"=>{"id"=>"27", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfd035d20>"=>{"id"=>"28", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfec4abf0>"=>{"id"=>"29", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfec2ba48>"=>{"id"=>"30", "dataid"=>"0", "starttime"=>"", "finishtime"=>""},
   "#<Staytime:0x007f1bfec28910>"=>{"id"=>"31", "dataid"=>"0", "starttime"=>"", "finishtime"=>""}},
 "commit"=>"Save changes"}
private
    def items_require
       params.require(:items).permit(:id,:finishtime, :starttime,:dataid,:Staytime)
    end
##
def update

     starttime = items_params['starttime']#これではエラーここでstartrimeやfinishtimeを変数に入れたい
   finishtime = items_params['finishtime'] #同じくエラー 
   dataid = items_params['dataid']#同じくエラー
 #問題が解決した後に一旦ループで新規のデータとそれ以外を2つの配列に詰めて、その後モデルと照合させるつもり

      @user=User.all
      #@items=items_require.all
        @attendance=Attendance.all
        today = Date.today
        gekkanhyou(today)

     render action: :indexedit
  end


試したこと
starttime = items_params['starttime']
starttimeにデータを挿入したい。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

正直、モデルではないデータを受信した際に無理にストロングパラメーターを利用する必要はありません。

また、なぜスケジュール的なデータをよくわからないキーでハッシュにして纏めて送っているのか
正直わかりません。
ハッシュにするにしてもキーは日付でよいのではないでしょうか?
現在の方法ではキーの情報が消えてしまい無意味です


複数の日付のデータが送られててよくわかりませんが

values = params[:items].values
start_times = values.map{|v| v[:starttime]}
finish_times= values.map{|v| v[:finishtime]}
date_ids    = values.map{|v| v[:dateid]}

こういうことでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/26 03:49 編集

    回答ありがとうございます。
    すいません。配列が格納されていること確認しました。取り出し方がうまくいかず。試行錯誤します。失礼しました。

    キャンセル

  • 2019/01/26 13:28

    変数に値を入れる前に初期化するとうまくいきました。ありがとうございました。
    久しぶりに進みます。また、ご指摘頂いた件は修正したいと想います。
    start_times = [}
    finish_times=[]
    date_ids=[]

    キャンセル

0

starttime = items_params[:starttime]でもだめでしたか

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/25 14:59 編集

    starttime = items_params[:starttime]
    で実行しましたが、やはり
    undefined local variable or method `items_params' for #<AttendanceController:0x007fc6055e6d98>
    のエラーが出ました

    キャンセル

  • 2019/01/25 16:27

    あれよく見たらitem_params定義されてなくないですか

    キャンセル

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

  • ただいまの回答率 87.60%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る