🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

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

Ruby

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Ruby on Rails

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

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

Q&A

解決済

1回答

903閲覧

複数の入力項目のパラメータをupdateメソッドに渡したい

tenten11055

総合スコア67

Ruby on Rails 5

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

Ruby

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Ruby on Rails

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

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

0グッド

1クリップ

投稿2019/09/10 13:53

編集2019/09/10 14:05

前提・実現したいこと

edit.htmlでレコードの登録・編集をするため、入力したパラメータをupdateメソッドに渡したい。
(更新ボタンを押した時)
また、作成したフォームに正しくレコードを表示させたい
####使用するテーブル

登録更新するテーブル -> sales カラム project_id,(projectテーブルと1対多の関係。salesが多。) monthly_amount(月ごとの金額)    sales_date(日付) year(年度)

###状況
お世話になります。初teratailでの質問です。
現在、会社の売り上げを管理する表をRuby on Railsで作成しています(画像参照)。
左側はProjectモデルのインスタンスで作成した表示テーブルです。
イメージ説明
それぞれのセルが入力フィールドになっており、画像にはありませんが更新ボタンを押すと
createまたはupdateを行い、editへリダイレクト後、入力した金額が入力した場所に表示されているというものを目標にしています。
1つのプロジェクトごとに4月〜12月まで入力欄があります。

f.submitボタンを実装し、押下するも、入力したパラメータが渡ってこず、
またform_for外、button_toでparamsを指定してみましたがなかなかうまくパラメータを渡せず困っています。
(debuggerで確認)

こういった場合の資料がなかなか見つからず、こちらに質問させていただきました。
またテーブル(画面の)の作成についてなど、ご指摘があれば大変ありがたいです。

宜しくお願い致します。

###該当のソースコード

ruby

1#routes.rb 2 3Rails.application.routes.draw do 4 resources :sales, param: :year, only: [:edit, :update] 5end 6

ruby

1#sales/edit.html.erb 2 3 <div class = 'sales-table-amount'> 4 <table class = 'sales-table'> 5 <tr> 6 <% n = 4 %> 7 <% 12.times do %> 8 <%= content_tag :th, "#{n}月", class: 'sales-th' %> 9 <% if n == 12 %> 10 <% n = 1 %> 11 <% else %> 12 <% n += 1 %> 13 <% end %> 14 <% end %> 15 </tr> 16 17 <%# プロジェクトidを付与するため %> 18 <% @projects.each do |project| %> 19 <tr> 20 <%# 12ヶ月分繰り返す %> 21 <% n = 4 %> 22 <% 12.times do %> 23 <%# --------------------------渡したいパラメータ---------------------------- %> 24 <%= form_for @sales, url: edit_sales_path(params[:year]) do |f| %> 25 <td class = 'sales-td'><%= f.text_field :monthly_amount, class:'sales-td', id: 'sales-numeral', 26 name: 'monthly_amount', style: 'border: none;', autocomplete: 'off', size: 11 %></td> 27 <%= f.hidden_field :project_id, value: project.id %> 28 <% if n > 3 %> 29 <%= f.hidden_field :sales_date, value: "#{params[:year]}/#{n}/01".to_date %> 30 <% else %> 31 <%= f.hidden_field :sales_date, value: "#{params[:year].to_i + 1}/#{n}/01".to_date %> 32 <% end %> 33 <%= f.hidden_field :year, value: params[:year] %> 34 <%# --------------------------渡したいパラメータ---------------------------- %> 35 <% if n == 12 %> 36 <% n = 1 %> 37 <% else %> 38 <% n += 1 %> 39 <% end %> 40 <% end %> 41 <% end %> 42 </tr> 43 <% end %> 44 </table> 45 </div> 46

ruby

1#sales_controller.rb 2 3class SalesController < ApplicationController 4 5 def edit 6 @projects = Project.all 7 @sales = Sales.all 8 end 9 10 def update 11 # 更新処理はまだ未記載 12 #paramsはここにdebuggerを挿して確認 13 redirect_to sales_path(params[:year]) 14 end 15 16end 17

試したこと

@salesをeachで回して、fields_for使いテキストフィールドを作成。
f.submi, submit_tag, link_to, button_to などそれぞれ試す。
など。

補足情報(FW/ツールのバージョンなど)

Rails 5.1.6

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

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

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

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

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

guest

回答1

0

ベストアンサー

ストロングパラメータが設定されていないので、パラメータを渡せないのではないでしょうか?

https://railsguides.jp/action_controller_overview.html#strong-parameters

投稿2019/09/11 08:50

no1knows

総合スコア3365

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

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

tenten11055

2019/09/13 17:03

ストロングパラメータとフォームのnameを設定したところ、しっかりとれました! ありがとうございました!
no1knows

2019/09/13 22:53

それはよかったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問