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

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

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

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

1回答

241閲覧

ajaxを使用した入力フォームでエラー

Masskaz

総合スコア32

Ruby on Rails

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2019/05/05 15:36

前提・実現したいこと

お世話になっております。
ajax初心者になります。
現在下記URLを参考に自習をしており、ajaxを使用して入力フォームを作ろうとしております。

https://www.sejuku.net/blog/28967

こちらのコントローラ名をposts、モデル名をPostにして、
あとは名前以外にもメールやメッセージの入力フォームなども追加で入れてみようとして作っているのですが、
画面表示までは言ったものの、最後のデータを追加するでエラーが出てしまいます。
未定義のメソッドがあると言われているのですが、どこのことが分からず困っております。

最終的には画面のデータを追加するを押したら名前、メール、メッセージ入力のフォームが出てくるようにしたいです。

ご教示いただけると大変助かります。
宜しくお願い致します。

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

ブラウザ上の検証画面のエラー文 GET http://localhost:3000/posts/new 500 (Internal Server Error) Rails.ajax @ rails-ujs.self-2b8935521e2301b06b45bd42e623eb0c0acf76c3a6ba383b7429c6a2884f8c23.js?body=1:217 Rails.handleRemote @ rails-ujs.self-2b8935521e2301b06b45bd42e623eb0c0acf76c3a6ba383b7429c6a2884f8c23.js?body=1:573 (anonymous) @ rails-ujs.self-2b8935521e2301b06b45bd42e623eb0c0acf76c3a6ba383b7429c6a2884f8c23.js?body=1:174 ターミナル上のエラー文 ActionView::Template::Error (undefined method `model_name' for nil:NilClass): 1: <%= simple_form_for @posts, remote: true do |f| %> 2: <%= f.input :name %> 3: <%= f.input :mail %> 4: <%= f.input :massage %> app/views/posts/_form.html.erb:1:in `_app_views_posts__form_html_erb__693774503921719658_70250801467280' app/views/posts/new.js.erb:1:in `_app_views_posts_new_js_erb__1893543175132787156_70250934638140'

該当のソースコード

routes.rb--------------- Rails.application.routes.draw do resources :posts # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end ----------------- posts controller----------------- class PostsController < ApplicationController def index @posts = Post.all end def new @post_new = Post.new respond_to do |format| format.html format.js end end def create @posts = Post.all @post = Post.new(post_params) respond_to do |format| if @post.save format.html format.js else format.js {render :new} end end end private def post_params params.require(:post).permit(:name,:mail,:massage) end end ----------------------- index.html.erb-------------- <h1>フォーム画面</h1> <table class="table" id="posts"> <%= render @posts %> </table> <%= link_to "データを追加する", new_post_path, remote: true %> <div id="post-form"></div> ------------------------ _index.html.erb----------------- <%= render @posts %> ------------------------- _post.html.erb--------------- <%= render @posts %> ----------------------- new.js.erb--------------------- $('#post-form').html("<%= j (render 'form') %>"); $('#post-form').fadeIn(800); ----------------------------- _form.html.erb---------------- <%= simple_form_for @posts, remote: true do |f| %> <%= f.input :name %> <%= f.input :mail %> <%= f.input :massage %> <%= f.button :submit ,"追加" %> <% end %> ----------------------------- create.js.erb------------------ $('#posts').html("<%= j (render 'index') %>"); $('#post-form').fadeOut(600); ----------------------------

試したこと

スペルチェックや文面の確認も行いましたが、何が未定義なのかが分かりません。

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

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

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

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

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

guest

回答1

0

<%= link_to "データを追加する", new_post_path, remote: true %> の記述がおかしい気がします。これは登録フォームに遷移するためのリンクなので、Ajaxでない普通のリンク(remoteを指定しない)で表示すべきではないでしょうか。

投稿2019/05/06 01:59

iwamot

総合スコア1154

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問