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

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

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

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

Ruby on Rails

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

Q&A

1回答

306閲覧

登録しようとすると発生するRouting Errorを解決したい

suparutan

総合スコア11

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/11/01 16:54

ruby on rails でアプリを作成中です。
投稿ページから「登録」を押すと、ルーティングエラーになります。
form_withでnewからcreaetがしたいです。

route.rbには7つのアクションを記載し、コントローラーも記載済みです。

routes.rb

root to:'posts#index'
resources :posts
end

posts_controller

class PostsController < ApplicationController
def index

@posts = Content.all

end

def new
@post =Content.new
end

def create
Post.create(content_params)
redirect_to root_path
end

def show
@post = Content.find(params[:id])
end

private
def content_params
params.require('content').permit(:name,:birth_day,:gender,:visit_day,:menu,:talk,:image,:address,:phone_num,:mail_address)
end
end

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

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

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

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

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

guest

回答1

0

def new
@post =Content.new
end

Postを登録したいのかContentを登録したいのかが分かりませんが
現状Contentに対するコントローラーはroutes.rbで指定されていないようですので

ruby

1def new 2 @post = Post.new 3end

が正しいかと思います。

またshowcontent_paramsも同様に

  • contentpost
  • ContentPost

で置換を掛ける必要があります。

投稿2020/11/01 21:07

asm

総合スコア15149

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

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

suparutan

2020/11/02 10:03

ありがとうございます。contentとpostの関係ですが、 現状、contentというモデルとDBを作っており、インスタンス変数を@postとしております。 ビュー内のform_withもおかしいのかな?と感じていますが、特に調べた結果問題なかったです。 コントローラー class PostsController < ApplicationController def index @posts = Content.all end def new @post =Content.new end def create Content.create(content_params) redirect_to root_path end def show @post = Content.find(params[:id]) end private def content_params params.require('content').permit(:name,:birth_day,:gender,:visit_day,:menu,:talk,:image,:address,:phone_num,:mail_address) end end 以下登録のビューです。 .header =render"header" .body .body_field = form_with(model: @posts, local: true) do |form| %h3 登録する
asm

2020/11/02 10:48

そうですかURLとModelの名前が不一致なのですね。 方法の一つとしてはroutes.rbにて resources :posts, as: 'contents' としてhelperの名前を変える方法 もうひとつはModel側のuri生成方法に手を加える方法になります。 (ちょっとど忘れしてて思い出せませんが・・・)
suparutan

2020/11/02 11:10

ありがとうございます!!! ようやく闇を抜け出せました!! URLとモデル名は一緒にするべきだったのですね・・ 本当に助かりました・・ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問