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

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

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

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

2647閲覧

Ruby on rails で投稿→保存の際にエラーが出てきてしまいます。

tao_tao

総合スコア12

Ruby

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2016/01/14 10:46

ActiveModel::ForbiddenAttributesError

1 2Extracted source (around line #7): 35 46 57 68 79 810 9 10 11 def create 12 @post= Post.new(params[:post]) 13 @post.save 14 redirect_to @post 15 end 16 17Rails.root: /Users/taotao/Desktop/ruby_lesson/blog

上記のエラーが発生します。
下記がpostコントローラー内容とmodelです。

class PostsController < ApplicationController def new end def create @post= Post.new(params[:post]) @post.save redirect_to @post end def show @post =Post.find(params[:id]) end private def post_params params.require(:post).permit(:title, :text) end def index @post=Post.all end end
model class Post < ActiveRecord::Base end

http://ruby-rails.hatenadiary.com/entry/20140813/1407915718#getting-up-and-running
↑サイトの4.7で詰まってしまいました。ご検討頂けたら幸いです。よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

#@post = Post.new(params[:post])

@post = Post.new(post_params)

こうすればいけます。

-Rubyの構文について:
post_paramsはプライベートメソッドです。(line #17)
Rubyのメソッドはパラメータ(引数)がない場合、省略することができます。
また、パラメータを括弧で囲う必要はありません。
たとえば、
post_params

<%= form_for :post, url: posts_path do |f| %>

post_params()

<%= form_for(:post, url: posts_path) do |f| %>
は同じ意味です。
Rubyではあまりreturnは書きません。

railsを始めた当初は、その分がなんなのかがわからない場合が多いですが、
それがわかると理解が深まるでしょう。

あと、メソッドのリターンも最後のオブジェクトが勝手にリターンされます。
def post_params
params.require(:post).permit(:title, :text)
end
これは、
def post_params
return params.require(:post).permit(:title, :text)
end
と同じ意味です。
基本的にRubyではreturnは省きます。

-エラーが出た時の対処法について:
7行目にミスがあるって書いてあります。
同じプログラムを打ってみたところ、
ActiveModel::ForbiddenAttributesError
ってのが出ました。
エラーが出た時の解決方法としてエラー文でググってみるといいです。

Ruby on Railsの強みは生産性です。
そのサイトを見終わったら、scaffoldを使ってみるといいでしょう。

投稿2016/01/16 07:37

編集2016/01/16 07:52
ame_chan

総合スコア35

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問