rails初学者でツイートアプリを作成中です。
progateで学習したものを実際にエディタに書き、railsで実装中。
新規投稿機能でContent can't be blankとエラーメッセージが出て困っています。(コードはprogateのものと同じ)
予想ではcreateaアクションに何らかのミスがあるのだと思います。
class PostsController < ApplicationController def index @posts = Post.all.order(created_at: :desc) end def show @id = params[:id] @post = Post.find_by(id: params[:id]) end def new @post = Post.new end def create # フォームから送信されたデータを受け取り、保存する @post = Post.new(content: params[:content]) if @post.save flash[:notice] = '投稿を作成しました' redirect_to('/posts/index') else render('posts/new') end end # 編集を定義する def edit @post = Post.find_by(id: params[:id]) end # 編集内容を保存する def update @post = Post.find_by(id: params[:id]) @post.content = params[:content] if @post.save flash[:notice] = '投稿を編集しました' redirect_to('/posts/index') else render('posts/edit') end end # 削除 def destroy @post = Post.find_by(id: params[:id]) @post.destroy flash[:notice] = '投稿を削除しました' redirect_to('/posts/index') end end
調べても見当たらないのでよろしくお願いします。
追記
new.html
<div class="main posts-new"> <div class="container"> <h1 class="form-heading">投稿する</h1> <%= form_tag("/posts/create") do %> <div class="form"> <div class="form-body"> <% @post.errors.full_messages.each do |message| %> <div class="form-error"> <%= message %> </div> <% end %> <textarea name="@post.content"></textarea> <input type="submit" value="投稿"> <%end%> </div> </div> </div> </div>
show.html
<div class="main posts-show"> <div class="container"> <div class="posts-show-item"> <p> <%= link_to "<" ,"javascript:history.back()" %> <%= @post.content%> </p> <div class="post-time"> <%= @post.created_at %> </div> <div class="post-menus"> <%=link_to"編集","/posts/#{@post.id}/edit"%> <%=link_to"削除","/posts/#{@post.id}/destroy", {method:"post"}%> </div> </div> </div> </div>
edit.html
<div class="container"> <h1 class="form-heading">編集する</h1> <%=form_tag("/posts/#{@post.id}/update") do %> <div class="form"> <div class="form-body"> <% @post.errors.full_messages.each do |message| %> <div class="form-error"> <%= message %> </div> <%end%> <textarea name="content"><%= @post.content %></textarea> <input type="submit" value="保存"> </div> </div> <% end %> </div> </div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/07 00:38
2019/09/07 00:49
2019/09/07 10:46