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

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

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

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

Ruby on Rails

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

Q&A

2回答

747閲覧

form_withで名前空間を扱いたいのに、特定のモデルだとうまくいかない

sooryung

総合スコア22

HTML5

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

Ruby on Rails

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

0グッド

0クリップ

投稿2019/03/08 06:16

こんにちは!
簡単なアプリをrailsで作っているのですが、form_withで名前空間をうまく扱えず、困っています。

初めは、
https://techracho.bpsinc.jp/hachi8833/2017_05_01/39502
の、

ルーティングをadmin_post_urlのような名前空間化する場合は以下のようにします。

<%= form_with(model: [ :admin, @post ]) do |form| %>
...<% end %>

とあるのを見て参考にしました。

するとうまく行きました。HTMLはこちらです。
new.html.erb

<h1>シフト入力画面</h1> <%= render :partial => "form" %> <%= link_to 'ホームへ戻る', staff_home_path %>

_form.html.erb

<ul> <li>空いている時間帯を入力してください。</li> <%= form_with(model: [:staff, @shift]) do |f| %> <li><%= f.datetime_select :start_time, :minute_step => 15 %> の</li> <li><%= f.datetime_select :end_time, :minute_step => 15 %> <li><%= f.submit %></li> <% end %> </ul>

ブラウザ
イメージ説明

しかし、@shiftの部分を@userだとか、@place、@clientに変えると、以下のエラーが出てしまいます。
イメージ説明

staff/viewのファイル構造はこちらです↓
イメージ説明

なぜでしょうか!色々探しましたがわかりません!

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

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

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

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

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

ys3128

2019/03/20 04:19 編集

shifts/staff/newの中で_form.html.erbを呼び出していると思いますが、該当のコントローラーの内容も必要かなと思います。 viewの情報だけだと、回答するのは難しい気がします、、、。 ・モデルの構成(おそらくapp/models/staff?のファイルの構成、app/models/staff/user.rbの内容)・・・Userモデルの読み込みができるかどうか、名前空間、moduleの定義等の確認 ・ルーティングの内容(rails routesの出力結果)・・・ルーティングが定義されているかどうかのチェック(今回の場合、Did you mean ? staff_user_pathと出ているので、定義はされていると思いますが、念のため。) ・該当のコントローラーの内容(app/controllers/staff/shifts_controllers.rbですかね?)・・・viewに渡される変数が何かを把握したい このあたりの情報があると回答がしやすいです。
guest

回答2

0

試してみましたが、解決しませんでした。

投稿2019/04/05 06:04

sooryung

総合スコア22

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

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

0

usersやplacesでは?

投稿2019/03/21 22:10

minehan

総合スコア170

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問