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

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

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

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

Q&A

解決済

2回答

165閲覧

Rails NoMethodErrorについて

gaijin

総合スコア30

Ruby on Rails

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

0グッド

1クリップ

投稿2019/05/01 10:29

Ruby on Rails初心者です。
独学で学んでおります。
新しくmodelを追加しようと思いplayers_controllerをいじっている際に発生いたしました。
何かを削除してしまったのか、エラーが出ないところまで戻ろうと試したのですが無理でした。
色々と試しているのですが、どこが問題なのかわからず苦戦しています。
どうか詳しい方ご教授いただけると助かります。

NoMethodError in Teams#show
undefined method `team_player_path' for #<#Class:0x007f0dbc944488:0x007f0dbc923850>
Did you mean? team_players_path

show.html.erb

<%= @team.title %><br> <% @team.players.each do |player| %> <%= player.player %><br> <%= player.body %><br> **<%= link_to 'delete', [player.team, player], method: :delete, data: {confirm: 'Are you sure?'} %><br>** <% end %> <%= form_for [@team, @team.players.build] do |f| %> Player <br> <%= f.text_field :player %><br> Plofile <br> <%= f.text_area :body %><br> <%= f.submit %> <% end %> <%= link_to 'Listへ', teams_path %>

teams_controller.rb

class TeamsController < ApplicationController def index @teams = Team.all end def show @team = Team.find params[:id] end def new end def edit @team = Team.find params[:id] end def create @team = Team.new(team_params) @team.save redirect_to team_path(@team) end def update @team = Team.find params[:id] if @team.update(team_params) redirect_to @team else render 'edit' end end def destroy @team = Team.find params[:id] @team.destroy redirect_to teams_path end def team_params params.require(:team).permit(:title,:body) end end

players_controller.rb

class PlayersController < ApplicationController def create @team = Team.find params[:team_id] @team.players.create(player_params) redirect_to team_path(@team) end def destroy #raise params.inspect @team = Team.find params[:team_id] @player = @team.playerd params[:id] @player.destroy redirect_to team_path(@team) end def player_params params.require(:player).permit(:player, :body) end end

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

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

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

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

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

guest

回答2

0

config/routes.rbにteam_player_pathが定義してないことで出ているエラーだと思われます。
config/routes.rbでどのようなルーティングの設定がしているかはわかりませんが、playersがteamでネストされていないならshow.html.erbのフォームは

<%= form_for @team.players.build, :url => {:action => 'create'} |f| do %>

のような記述の方がいいかもしれません。

投稿2019/05/02 13:19

haneru

総合スコア440

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

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

gaijin

2019/05/02 13:45

丁寧にありがとうございます。 トライアンドエラーを繰り返しどうにか解決することができました。
haneru

2019/05/02 13:51

解決出来てよかったです! 原因と解決方法を教えていただいてもよろしいでしょうか?
gaijin

2019/05/02 14:15

ルーティングの確認をしたところおそらくresourcesにshallowをつけていたのが原因だったようです。途中でつけたためルートの内容が変わってしまったのかと自分では考えております。
guest

0

ベストアンサー

エラーが示す通り team_player という名前のルートがないのが原因なのでしょう。何らかのファイルに「team_player_path」という記載があるのではないでしょうか。

投稿2019/05/01 10:53

iwamot

総合スコア1154

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

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

gaijin

2019/05/02 13:44

返信遅くなり申し訳ございません。 トライアンドエラーを繰り返しどうにか解決することができました。 いつもありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問