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

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

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

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

Ruby on Rails 6

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

Q&A

解決済

1回答

498閲覧

form_withで、selectタグから選択されたidをパスに渡す方法を知りたいです。

yatchi

総合スコア1

Ruby

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

Ruby on Rails 6

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

0グッド

0クリップ

投稿2022/01/13 07:30

編集2022/01/13 22:55

■聞きたいこと
form_withで、selectタグから選択されidをパスに渡す方法を知りたいです。

■目的
以下のpathのschedule_idに、フォームで選択した値を渡したい

path

1movie_schedule_sheets GET /movies/:movie_id/schedules/:schedule_id/sheets(.:format) sheets#index

■状況

routes.rb

1 resources :movies do 2 resources :schedules do 3 resources :sheets 4 resources :reservations 5 end 6 end

views/movies/show.html.erb

1<%= form_with url: movie_schedule_sheets_path(@movie, @shedule), method: :get, local: true do |f| %> 2 3 4 <%= f.select :date, (0..6).map {|i| [(Time.now + i.days).strftime("%m月%d日"), (Time.now + i.days)]} %> 5 6 <%= f.select :schedule_id, @schedules.map {|schedule| [schedule.start_time.strftime("%m月%d日%H時%M分"), schedule.id]} %> 7 8 9<%= f.submit %>

controllers/movies_controller.rb

1 def show 2 3 @movie = Movie.find(params[:id]) 4 5 @schedules = @movie.schedules 6 7 @schedule = #ここの指定方法が分かりません 8 9 end

selectタグから選択されたscheduleのidをフォームの指定パスに渡す方法は記事を探しても見つかりませんでした。

もし解決につながりそうな知見をお持ちの方がいらっしゃれば、お声がけいただけると幸いです。
よろしくお願いいたします。

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

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

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

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

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

winterboum

2022/01/13 15:33

「フォームの指定パス」というのが意味不明です。 具体的に、どこにどう渡ってほしいのか、を書いてみてください
guest

回答1

0

ベストアンサー

意図しているのは、show.html の form_with url: movie_schedule_sheets_path(@movie, @shedule), の @scheduleにf.select :schedule_id, の値を入れたいということですか?
それはできません。
form_withの@schedule は action show で設定した @schedule に基づきます。
それに従って作成されたform に、そのあとで指定された f.select :schedule_id の値をいれることはできません。
javascriptを使って、無理やり修正することは可能ですが普通はそこまで行う必要ないし。

みたところ、show とは言いながら new か edit のように思われます。
そちらで書き直したほうが良いでしょう。
new でしたら @schedule = Schedule.new ですし、editでしたら @schedule = Schedule.find( 編集するよう指定されたscheduleのid) です

投稿2022/01/14 00:42

winterboum

総合スコア23329

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

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

yatchi

2022/01/14 09:17

記事を探してもなかったのは、そもそもできないからなんですね。 回答していただきありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問