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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

1897閲覧

Rails 「param is missing or the value is empty」のエラーが出る

kirisaki_aoi

総合スコア27

Ruby

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

Ruby on Rails

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

0グッド

3クリップ

投稿2019/08/29 04:21

Rails初学者です。Railsでタスク管理システムを作っています。
完了したタスクはbutton_tagでパラメータを送り完了済みにしたいのですが、現在
「param is missing or the value is empty」のエラーが出ている状況です。

現在の仕様としてはnew.html.erbでタスク内容とともに「未完了」のパラメータをhidden_fieldで送り、indexに表示しています。
想定している仕様としてはindexのページで「完了」のボタンを押下すると、未完了から完了に切り替わるシステムを実装したいです。

new

1<%= form_for(@task) do |form| %> 2 <%= form.text_field :title %> 3 <%= form.hidden_field :completed,:value => 0, id: 'task_completed' %> 4 <%= form.submit :class=>"btn-form" %>

index

1 <% @tasks.each do |task| %> 2 <%= form_with(model: task, local: true) do |form| %> 3 <%= task.title %> 4 <%= link_to image_tag('確認.png'), edit_task_path(task) %> 5 <%= link_to image_tag('削除.png'), task, method: :delete%> 6 <%= button_to "完了", completed_task_path(task) %> 7 <% end %> 8 <% end %>

ruby

1class TasksController < ApplicationController 234 def completed 5 @task = Task.new 6 @task = Task.where(:completed => 1) 7 render :action => 'index' 8 end 9 10 11 private 12 def set_task 13 @task = Task.find(params[:id]) 14 end 15 search_conditions = %i( 16 name 17 ) 18 def task_params 19 params.require(:task).permit(:title, :completed) 20 end 21end

routes

1Rails.application.routes.draw do 2 root 'tasks#index' 3 resources :tasks do 4 member do 5 get :completed 6 end 7 end 8end 9

以下が現在出ているエラー画面となっています。

ActionController::ParameterMissing in TasksController#update param is missing or the value is empty: task Extracted source (around line #82): 80 81 def task_params 82 params.require(:task).permit(:title, :limit, :point, :comment, :completed) 83 end 84 end Request Parameters: {"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"J0Ys8GLxr0bg8+PTCaHP7BC07uNu5LWL7auEDQ8+i69NYncK1dlujVnqKJ074xoACoO3zyZgzv/0TolFK8+5fg==", "id"=>"15"}

かなり初歩的な内容ではあるかと思いますが、ご教示いただけますと幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

erb

1<%= link_to completed_task_path(task) do %> 2 <%= button_tag '完了', type: 'button' %> 3<% end %>

としてください。

投稿2019/08/29 05:03

編集2019/08/29 09:01
Mugheart

総合スコア2344

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

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

kirisaki_aoi

2019/08/29 05:16

ご回答ありがとうございます! 完了という内容の送信はindexからformではなくbutton_toで実装しようと思っているのですが、 その際もinput_typeの要素を用いる必要があるという事でしょうか…? 的外れな質問をしていたら申し訳ありません。
Mugheart

2019/08/29 06:26

あーなるほど、理解しました。 回答修正しておきます。
kirisaki_aoi

2019/08/29 07:37

ご回答ありがとうございます。 修正して頂いた内容で動かしてみたのですが全く同じエラーが出ている状態です…。 index.html.erbの記述以外の個所で値がうまく受け渡せていないという事でしょうか…? お手数おかけして申し訳ないです。
Mugheart

2019/08/29 07:42

button_to で生成されているHTMLを見せていただけますか?
kirisaki_aoi

2019/08/29 08:41

ご返信ありがとうございます。 button_toを押下するとcompletedアクションが呼び出され、indexの画面にリダイレクト する形となっています。 そのため想定としてはボタンが押されたタスクの「未完了」データが「完了」に切り替わるのみの 動作で、viewはindexのままになっています。 よろしくお願いいたします。
Mugheart

2019/08/29 08:43

button_to の部分で生成されているHTMLコードを見せていただけますか?
Mugheart

2019/08/29 09:02

自分で確認しました。回答を修正しておきました。
kirisaki_aoi

2019/08/29 09:22

ご回答ありがとうございます。 無事に想定通りの動きが出来ました!本当にありがとうございます。 かなり拙い日本語と情報でお手を煩わせてしまって本当に申し訳ありませんでした。 教えて頂いた内容をもとにこれからも精進して参ります。 この度は本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問