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

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

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

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

Q&A

解決済

1回答

799閲覧

rails のフォームに関して

tamusan

総合スコア16

Ruby on Rails 5

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

0グッド

0クリップ

投稿2019/06/12 16:47

今現在、マッチング風のシステムを作ってます。

やりたいこととしては、ユーザーの詳細画面でメッセージを送るボタンを押すとルームが作成されて、中間テーブルに値がセットされる。ということをやりたいです。

しかし、フォームがうまくいきません。

def show @student = Student.find_by(id: params[:id]) @room = Room.new end
<ユーザー詳細ページ> <%= @student.name %> <%= form_for @room, :url => { :controller => :rooms, :action => :create } do |f| %> <%= f.submit "メッセージを送信" %> <% end %>

メッセージを送信をクリックするとルームが作られるようにしたい。

class RoomsController < ApplicationController def create @student = Student.find_by(id: params[:student_id]) @room = Room.create @from_user = current_user.id @to_user = @student.company.id @room_company = RoomCompany.create(room_id: @room.id ,from_user_id: @from_user.id ,to_user_id: to_user.id) redirect_to "/students/index" end end

【エラー】
ActionController::UrlGenerationError in Students#show
No route matches {:action=>"create", :controller=>"rooms", :id=>"10"}

どうかご教授願いたいです。よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

No route matchesは routesの記述ミスです。

config/routes.rbに

routes

1controller :rooms do 2 post '/rooms' => :create

などの記述はありますか?

また。form_for はrails 5.1以降、非推奨になっていくので
バージョンにもよりますが、

form_with model: @room に切り替えていったほうが良いかと思います。

投稿2019/06/13 00:20

shuzi

総合スコア197

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問