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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

解決済

3回答

765閲覧

データ送信の際に、No Method Error が出る

kaoru_tujimiya

総合スコア36

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

0クリップ

投稿2018/06/30 09:31

編集2018/07/03 04:25

ブログ記事のデータを更新するミニブログみたいなのを作成してまして、追加しようとしたらエラーが出たので助言のほど宜しくお願いします。
イメージ説明
ここでデータを送信したら以下のエラーが出ました。

![イメージ説明
add.html.erb

<h1>Blogposts#add</h1> <p>ブログの記事の投稿</p> <% if @blogpost.errors.any? %> <ul> <% @blogpost.errors.full_messages.each do |err| %> <li><%= err %></li> <% end %> </ul> <% end %> <table> <%= form_for(@blogpost, url:{controller:'blogposts', action:'add'}) do |form| %> <tr> <th>Title</th> <td><%= form.text_field :title %></td> </tr> <tr> <th>Read</th> <td><%= form.text_field :read %></td> </tr> <tr> <th>Content</th> <td><%= form.text_area :contact, {cols:40,rows:10} %></td> </tr> <tr> <th>Genre ID</th> <td><%= form.text_field :bloggenre_id %></td> </tr> <tr> <th></th> <td><%= form.submit "送信" %></td> </tr> <% end %> </table> <hr> <p>ジャンルの一覧</p> <table> <tr> <th>Id</th><th>Genre</th> </tr> <% @genres.each do |obj| %> <tr> <td><%= obj.id %></td> <td><%= obj.name %></td> </tr> <% end %> </table>

blogposts_controller.rb

class BlogpostsController < ApplicationController layout 'blogposts' def index @data = Blogpost.all.order('created_at desc') end def add @blogpost = Blogpost.new @genres = Bloggenre.all if request.post? then @blogpost = Blogpost.create blogposts_params redirect_to '/blogposts' end end def edit @blogpost = Blogpost.find params[:id] @genres = Bloggenre.all if request.patch? then @blogpost.update blogposts_parmas redirect_to '/blogposts' end end def delete @blogpost = Blogpost.find(params[:id]) if request.post? then @blogpost.destroy redirect_to '/blogposts' end end private def blogposts_params params.require(:blogpost).permit(:title,:read,:content,:bloggenre_id) end end

index.html.erb

<h1>Blogposts#index</h1> <p>投稿記事の一覧</p> <table> <tr> <th>Id</th><th>title</th><th>read</th><th>genre</th><th colspan="2"></th> </tr> <% @data.each do |obj| %> <tr> <td><%= obj.id %></td> <td><%= obj.title %></td> <td><%= obj.read %></td> <td><%= obj.bloggenre.name %></td> <td><a href="/blogposts/<%= obj.id %>">Edit</a></td> <td><a href="/blogposts/delete/<%= obj.id %>">Delete</a></td> </tr> <% end %> </table> <p><a href="/blogposts/add">新規作成>>></a></p>

migrate/20180628045953_create_blogposts_rb

class CreateBlogposts < ActiveRecord::Migration[5.2] def change create_table :blogposts do |t| t.text :title t.text :read t.text :contact t.integer :bloggenre_id t.timestamps end end end

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

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

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

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

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

guest

回答3

0

自己解決

db/migrate/20180628045953_create_blogposts.rb

class Blogpost < ApplicationRecord belongs_to :bloggenre validates :title, :contact,presence: {message:'は、必須項目です'} end

contactの部分がcontentになっててエラーが出てました。解決しました、ご意見ありがとうございました。

投稿2018/07/03 04:51

kaoru_tujimiya

総合スコア36

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

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

0

もしかして、ですが。

Ruby

1 private 2 def blogposts_params 3 params.require(:blogpost).permit(:title,:read,:content,:bloggenre_id) 4 end 5

ストロングパラメータでpermitしているメンバーが:contentになっているのですが
POSTで渡しているメンバーはcontactのようです。
エラーメッセージを読む限りcontactが正しそうですのでここを変更してみるとどうなるでしょうか。

投稿2018/07/03 00:56

JUNJUNJUN

総合スコア25

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

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

kaoru_tujimiya

2018/07/03 04:15

コメントありがとうございます。やってみたのですが、また同じエラーがでてしまいました。
JUNJUNJUN

2018/07/03 04:22

サーバーは更新されましたか? cotrollerはsourceの変更だけでは反映されません。
kaoru_tujimiya

2018/07/03 04:41

更新もしてみましたが、同じエラーが出力されました。参考の為、migrationファイルも載せておきます。何か参考になりアドバイスが聞けたらと思います。宜しくお願いします。
kaoru_tujimiya

2018/07/03 04:45

すみません、モデルクラスのblogposts.rbの中の、validatesの設定が、contentになってました。 解決しました、ありがとうございます。
guest

0

モデル(というかmigrationファイル)ないからハッキリとしないが

  • contactが正しい

controllerの

ruby

1 def blogposts_params 2 params.require(:blogpost).permit(:title,:read,:contact,:bloggenre_id) 3 end
  • contentが正しい

viewの

html

1 <td><%= form.text_area :content, {cols:40,rows:10} %></td>

多分、前者で動くはず
後者の場合はmigration作ってリネームもしくはカラム追加などの修正が必要

投稿2018/07/03 00:47

asm

総合スコア15147

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

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

kaoru_tujimiya

2018/07/03 04:22

コメントありがとうございます。 前者の方でやってみたのですが、同じエラーが出ました。 追加でmigrationファイルを追加しておきます。すみませんが宜しくお願いします。 それと、contentじゃなくて、contactの方にコントローラもビューも直しておきました。
kaoru_tujimiya

2018/07/03 04:47

すみません、モデルクラスのblogposts.rbのvalidatesの設定が、contactなのにcontentになってたのでエラーになってました。。解決しました、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問