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

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

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

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby on Rails 5

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

Q&A

解決済

1回答

1045閲覧

Ruby on Rails の newメソッドとフォームで躓いています

meatbunclimb

総合スコア4

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby on Rails 5

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

0グッド

0クリップ

投稿2020/04/01 11:08

前提・実現したいこと

Ruby on Railsの勉強をかねて、チュートリアルのツイッタークローンを元に、自分一人用のマイクロポストアプリを作ろうとしています。
新規ポストのフォーム画面でエラーが発生しています。
ツリー機能を実装しようとしており、そちらはポストのidとは別でツリー毎のidを割り振って実装しようとしています。
フォームで入力させるのは中身と添付画像だけにしようとしていますが、そこで躓いています。
また、下記のコードでは、まだ画像添付のフォームは付けないでおいています。

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

NoMethodError in Posts#new undefined method `label' for nil:NilClass

該当のソースコード

new.html.erb

<%= form_tag(@post) do |f| %> <%= f.label :content, "コンテンツ" %><br> <%= f.text_field :content %>    <%= f.submit "POST"%> <% end %>

post_contloller の newメソッド
userとpostで関連付けは行いました。

def new #@latest_tree_id_plusoneの周りはあまりにコードが芋くさいので省略させてください。ちゃんと数値になってはいます。 @post = @current_user.posts.build( content: [:params], image: [:params] , tree_id: @latest_tree_id_plusone , tree_number: 1 )

試したこと

・試しにフォームをなくして、<%= @post.id %>などをいれてみた所、それは表示されましたので、オブジェクトが生成されていないわけではないと思います。
・renderでフォームを生成した所、content部分が入力済みであってもバリデーションに空白と弾かれました。
一度バリデーションを解除して強引に送信してみたら、入力済みに見えていたuser_idなどもすべてnilのデータが登録されていました。

補足情報(FW/ツールのバージョンなど)

開発環境はAmazonのcloud9です。
Rails 5.0
Ruby 2.6.3

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

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

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

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

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

guest

回答1

0

自己解決

newは初期のPost.newのみに戻しました。
renderで呼び出すformのファイルを編集し、imageとcontentだけ編集出来るようにしました。
createの保存の直前に、取得したtree_numberなどを @post.tree_number = ~~と代入するようにしました。

投稿2020/04/06 11:12

meatbunclimb

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問