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

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

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

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

Q&A

解決済

1回答

535閲覧

NoMethodErrorについて

Nakamura

総合スコア11

Ruby on Rails 6

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

0グッド

0クリップ

投稿2022/06/06 09:12

前提・実現したいこと

railsにて映画レビューサイトを作成しています。
投稿画面を表示させたところエラーが発生してしまいました。解決法やソースコードをご教授いただきたいです。

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

NoMethodError in Admin::Movies#new

Showing /home/ec2-user/environment/MovieBoard/app/views/admin/movies/new.html.erb where line #2 raised:

undefined method `movies_path' for #ActionView::Base:0x007fe8e80cfef8

Rails.root: /home/ec2-user/environment/MovieBoard

該当のソースコード

new.html.erb

<%= form_with model: @movie do |f| %> <h5> 上映日<%= f.text_field :day %> 製作国<%= f.text_field :country %> 上映時間<%= f.text_field :time %> </h5> <h4>タイトル</h4> <%= f.text_field :title %> <h4>あらすじ</h4> <%= f.text_area :body %> <%= f.submit '投稿' %> <% end %>

movies_controller.rb

class Admin::MoviesController < ApplicationController def new @movie = Movie.new end def create @movie = Movie.new(movie_params) @movie.save redirect_to admin_movies_path end def index @movies = Movie.all end def show end def edit end private # ストロングパラメータ def movie_params params.require(:movie).permit(:title, :body, :day, :country, :time) end end

routes.rb

Rails.application.routes.draw do # 顧客用 scope module: :public do root to: 'homes#top' end # URL /customers/sign_in ... devise_for :customers,skip: [:passwords], controllers: { registrations: "public/registrations", sessions: 'public/sessions' } # 管理者用 namespace :admin do resources :movies, only: [:new, :create, :index, :show, :edit, :update, :destroy] end # URL /admin/sign_in ... devise_for :admin, skip: [:registrations, :passwords] ,controllers: { sessions: "admin/sessions" } # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end

試したこと

new.htmlの@movieを適当な@listなどに変更すれば表示はされるのでおそらく因数の受け渡しに何か問題があるのかと思いますが原因は分からないです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

form_with model: @movie

form_with model: [:dmin, @movie]
かなぁ

投稿2022/06/06 09:24

winterboum

総合スコア23347

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

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

Nakamura

2022/06/06 10:24

お返事ありがとうございます!回答していただいたとおりに記載した場合無事動くことができました! 又、ほかの方法として <%= form_with(model: @movie, url: admin_movies_path) do |f| %>としても行けました! routes.rbでnamespaceを使用している場合はurl指定したほうが良いらしいです。 回答していただきありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問