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

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

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

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

Q&A

解決済

1回答

410閲覧

newアクションが実行できない

T.Adams

総合スコア40

Ruby on Rails 6

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

0グッド

0クリップ

投稿2020/02/08 09:35

分からないこと

Rails6でnewアクションを実行しようとしていますが、ページ遷移がうまくいかず、警告が出ます。routingが怪しいと思い確認しましたが、問題ありませんでした。すごく初歩的なことで申し訳ないですが、分かる方いらっしゃいましたら、お願いします。

ソース

View

1<div class="container"> 2 <h1 class="text-center">新規作成</h1><br> 3 <div class="col-sm-12 bg-color"> 4 <%= image_tag 'wallpapaer.jpg', class: 'img-fluid'%> 5 <%= form_for @article do |f| %> 6 <div class="form-group"> 7 <%= f.label :title, 'タイトル'%> 8 <%= f.text_field :title, class: 'form-control'%> 9 </div> 10 <div class="form-group"> 11 <%= f.label :title, '本文'%> 12 <%= f.text_area :body, rows: 10, class: 'form-control' %> 13 </div> 14 <%= f.submit '新規作成', class: 'btn btn-primary' %> 15 <% end %> 16 </div> 17</div>

Controller

1class ArticleController < ApplicationController 2 def index 3 @articles = Article.order(created_at: :desc) 4 end 5 6 def show 7 @article = Article.find(params[:id]) 8 end 9 10 def new 11 @article = Article.new 12 end 13 14 def edit 15 @article = Article.find(params[:id]) 16 end 17 18 def create 19 @article = Article.new(article_params) 20 if @article.save 21 redirect_to @article, notice: 'ユーザ作成に成功しました' 22 else 23 render :new, alert: 'ユーザの作成に失敗しました' 24 end 25 end 26 27 def update 28 if @article.update(article_params) 29 redirect_to @article, notice: '記事の更新に成功しました' 30 else 31 render :new, alert: '記事の更新に失敗しました' 32 end 33 end 34 35 def destroy 36 if @article.destroy 37 redirect_to :index, notice: '記事の削除に成功しました' 38 else 39 render :edit, alert: '記事の削除に失敗しました' 40 end 41 end 42end

route

1Rails.application.routes.draw do 2 resources :article 3 root 'article#index' 4 # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html 5end

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

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

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

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

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

guest

回答1

0

ベストアンサー

strong parameterの設定がないので、値を受け渡しできていません。
RailsGuide:StrongParameters

controllerの最後に下記を追加してみてください。

private def article_params params.require(:article).permit(:title, :body) end

また質問とは関係ありませんが、rails g scaffold post title:string body:stringをコマンドで実行すると、postコントローラーが作成されます。
自分が書いたarticleコントローラーとのコードの違いを確認すると、よりRailsらしい書き方が身につくかと思います。

なお、上記で作ったものは、rails destroy scaffold postで削除されます。

投稿2020/02/08 10:24

編集2020/02/09 00:46
no1knows

総合スコア3365

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

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

T.Adams

2020/02/08 10:47

newアクションにStrong paramerは必要ですか?newしているだけなので、値は不要とかんがえていました 。
no1knows

2020/02/08 11:22

あぁ、読み間違えていました。申し訳ありません。 newアクションに値は不要です。 ではどこを直せばよいかという話なのですが、現状作ったものを修正することはおすすめしません。 理由としては、正しい命名規則にそっていないため、今のまま修正すると不必要なコードがたくさん増えていってしまうのと、他で質問しているdestroyアクションも含めて細々としたコードの修正をしなければならないからです。 Railsは、「設定より規約」ということを非常に大事にしています。 自分で試行錯誤しながらすすめても、結局、時間がかかり、スキルの習得に時間がかかってしまいます。 またチームで開発するときには、他の人が理解できないコードになってしまいがちです。 まず規約に沿ったscaffoldを学んでみて下さい。 http://kanjihtmt.github.io/blog/2015/04/02/scaffold/
T.Adams

2020/02/08 11:51

丁寧な回答ありがとうございます。色々調査しましたが、「no1knows様」がおっしゃる通り、命名が非常に重要であることを実感しました。上記URLを参考に、命名を頭に入れてから再度トライします。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問