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

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

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

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Ruby on Rails

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

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Sublime Text

SublimeTextとは、オーストラリアのSublime HQ Pty Ltdが提供しているテキストエディターのことです。Mac/Windows/Linuxでの利用が可能で、柔軟にカスタマイズできたり、多くの言語に対応していくこともあり、海外や日本国内でも人気のあるエディターです。

Q&A

解決済

1回答

453閲覧

【Rails】'render new'を実行すると、「ArgumentError」が出る。

matsubishi5

総合スコア7

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Ruby on Rails

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

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Sublime Text

SublimeTextとは、オーストラリアのSublime HQ Pty Ltdが提供しているテキストエディターのことです。Mac/Windows/Linuxでの利用が可能で、柔軟にカスタマイズできたり、多くの言語に対応していくこともあり、海外や日本国内でも人気のあるエディターです。

0グッド

0クリップ

投稿2020/02/24 05:36

編集2020/02/24 08:04

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

イメージ説明
イメージ説明

該当のソースコード

app/models/book.rb

Ruby

1class Book < ApplicationRecord 2 validates :title, presence: true 3 validates :body, presence: true 4end

app/config/routes.rb

Ruby

1Rails.application.routes.draw do 2 # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 3 root to: 'homes#top' 4 get 'top' => 'homes#top' 5 get 'todolists/new' 6 post 'todolists' => 'todolists#create' 7 get 'todolists' => 'todolists#index' 8 get 'todolists/:id' => 'todolists#show',as:'todolist' 9 get 'todolists/:id/edit' => 'todolists#edit',as:'edit_todolist' 10 patch 'todolists/:id' => 'todolists#update',as:'update_todolist' 11 delete 'todolists/:id' => 'todolists#destroy',as:'destroy_todolist' 12end

app/controllers/todolists_controller.rb

Ruby

1class TodolistsController < ApplicationController 2 3 def new 4 @book = Book.new 5 end 6 7 def create 8 book = Book.new(book_params) 9 if book.save 10 redirect_to todolist_path(book) 11 flash[:notice] = "Book was successfully created." 12 else 13 render 'new' 14 end 15 end 16 17 def index 18 @books = Book.all 19 end 20 21 def show 22 @book = Book.find(params[:id]) 23 end 24 25 def edit 26 @book = Book.find(params[:id]) 27 end 28 29 def update 30 book = Book.find(params[:id]) 31 if book.update(book_params) 32 redirect_to todolist_path(book) 33 flash[:notice] = "Book was successfully updated." 34 else 35 render 'edit' 36 end 37 38 def destroy 39 @book = Book.find(params[:id]) 40 @book.destroy 41 redirect_to todolists_path 42 end 43 44 private 45 def book_params 46 params.require(:book).permit(:title,:body) 47 end 48end

app/views/todolists/new.html.erb

Ruby

1<h2>New Book</h2> 2 3<%= form_for(@book,url:'/todolists') do |f| %> 4 <% if @book.errors.any? %> 5 <div> 6 <h2><%= @book.errors.count %>件のエラーがあります。</h2> 7 <ul> 8 <% @book.errors.full_messages.each do |msg| %> 9 <li><%= msg %></li> 10 <% end %> 11 </ul> 12 </div> 13 <% end %> 14 <h6>Title</h6> 15 <%= f.text_field :title %> 16 17 <h6>Body</h6> 18 <%= f.text_area :body %> 19 20 <p><%= f.submit 'Create Book' %></p> 21 22<% end %>

補足情報(FW/ツールのバージョンなど)

PC : MacBook Air 2017
OS : macOS Catalina
Editer : Sublime Text3
Vagrant : 2.2.7
VirtualBox : 6.1.2
ここにより詳細な情報を記載してください。

前提・実現したいこと

Ruby on Railsで、「本の感想を投稿できるサイト」という名目の簡易投稿サイトを作成中です。
新規投稿時、タイトル又は本文が空白であった場合にエラーメッセージを表示させようとしたところ、上記のエラーが発生してしまいました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

createアクションで作成した変数が View に渡っていないので、エラーになっています。
Controller から View へ変数を渡す場合は、インスタンス変数@bookにしてください。

rb

1class TodolistsController < ApplicationController 2 ... 3 4 def create 5 @book = Book.new(book_params) // modify 6 if @book.save // modify 7 redirect_to todolist_path(@book) // modify 8 flash[:notice] = "Book was successfully created." 9 else 10 render 'new' 11 end 12 end 13 ... 14end

投稿2020/02/24 08:13

shgtkshruch

総合スコア665

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

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

matsubishi5

2020/02/24 08:16

解決しました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問