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

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

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

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

Q&A

解決済

1回答

1344閲覧

[Rails]VIEWからControllerにparamを渡し処理分岐に使いたい

BLACK13

総合スコア17

Ruby on Rails

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

0グッド

0クリップ

投稿2020/01/21 02:03

前提・実現したいこと

VIEWからControllerにparamを送り、内容に応じて処理を分岐させたい。

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

・view(new.html.erb)側にform_forでのテキスト入力およびhidden_fieldで, paramの値をセット
・Controllerのcreateアクションを呼び出し(paramの値を渡す)
・Controllerのcreateアクションでは(hidden_fieldで入力された)paramの値を判別し処理を分岐(if文)

を実装したいのですが、意図したようにController側で処理分岐ができません。

該当のソースコード

呼び出し側のView

new.html.erb

1 2<div class="row"> 3 <div class="col-md-6 col-md-offset-3"> 4 <%= form_for(@task, url: newtask_path) do |f| %> 5 <%= render 'shared/error_messages', object: f.object %> 6 7 <%= f.hidden_field :from_challenge_flg, :value => 'True' %> 8 <%= f.hidden_field :challenge_id, :value => @challenge_id %> 9 10 <%= f.label :title %> 11 <%= f.text_field :title, class: 'form-control' %> 121 13 <%= f.label :discription %> 14 <%= f.text_area :discription, class: 'form-control' %> 15 16 <%= f.label :close_condition %> 17 <%= f.text_field :close_condition, class: 'form-control' %> 18 19 <%= f.label :due_date %> 20 <%= f.text_field :due_date, class: 'form-control' %> 21 22 23 <%= f.submit "Generate New Task", class: "btn btn-primary" %> 24 <% end %> 25 </div> 26</div>

呼び出されるContolloerの処理(create)

tasks_controller.rb

1def create 2 3 @from_challenge_flg=params[:from_challenge_flg] 4 @challenge_id = params[:challenge_id] 5 6 7 if @from_challenge_flg =='True' 8 #処理A 9 else 10 #処理B 11 end

上記のControllerのCreateアクションでif文の[#処理A]を実行したい場合でも毎回[#処理B]が実行されます。
どうも@from_challenge_flg=params[:from_challenge_flg]での値がセットされていないようです。

試したこと

consoleおよびdebuggerを差し込んで実行してみましたが、

パラメタについては全てセットされているように見えますが、

Started POST "/newtask" for ::1 at 2020-01-21 10:06:24 +0900 Processing by TasksController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"A07Nx19iGdhuCm2rwXsKBAGIpL2/scV+8zghHof0NO7RJR/GYvkO5YTv9YOfVtlFMaIAg0GpWePrvPVBxRuMgw==", "task"=>{"from_challenge_flg"=>"True", "challenge_id"=>"302", "title"=>"テスト", "discription"=>"テスト", "close_condition"=>"テスト", "due_date"=>"テスト"}, "commit"=>"Generate New Task"}

@from_challenge_flg=params[:from_challenge_flg]の箇所については値がセットできていないようです。

(byebug) @from_challenge_flg nil

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

ruby 2.6.0p0 (2018-12-25 revision 66547) [x64-mingw32]
Rails 5.1.7
※当方、超初心者でして質問の仕方も含めて不適当な点もあるかもしれません。申し訳ないですがアドバイスお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

rb

1@from_challenge_flg = params[:task][:from_challenge_flg]

です。パラメータの形をよく見てください。

投稿2020/01/21 02:17

Mugheart

総合スコア2349

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問