rails でツイッタークローンを作成し勉強中なのですが、viewファイルのform_for(@post)でエラーがでており解決ができません。
エラー文
ArgumentError in Users#show
views/shared/_post_form.html.erb where line #1 raised:
First argument in form cannot contain nil or be empty
###ソースコード
_post_form.html.erb
<%= form_for(@post) do |f| %> <% render 'shared/error_messages', object: f.object %> <div class="field"> <%= f.text_area :title, placeholder: "" %> <%= f.text_area :context, placeholder: "" %> </div> <%= f.submit "Post", class: "btn btn-primary" %> <% end %>
users_controller.rb
class UsersController < ApplicationController def show @user = User.find(params[:id]) @posts = @user.posts end def new @user = User.new end def create @user = User.new(user_params) if @user.save flash[:success] = "success!!" redirect_to @user else render 'new' end end private def user_params params.require(:user).permit(:name, :email, :password, :password_confirmation, :image) end end
show.html.erb
<div class="row"> <aside class="col-md-4"> <section class="user_info"> <h1> <% if @user.image? %> <%= image_tag @user.image.thumb.url %> <% else %> <%= image_tag 'noimage.gif' %> <% end %> <%= @user.name %> </h1> </section> </aside> <div class="col-md-8"> <% if @user.posts.any? %> <h3>Posts (<%= @user.posts.count %>)</h3> <ol class="posts"> <%= render @posts %> </ol> <% end %> </div> <div class="col-md-8"> <h3>投稿する</h3> <ol class="posts"> <%= render 'shared/post_form' %> </ol> </div> </div>
form_for(@post)の@postの中身がnil になっているというのはわかっているのですが、イマイチどこを直せばいいのかわかっておりません。
どなたかご教示いただけませんでしょうか?
回答1件
あなたの回答
tips
プレビュー