前提・実現したいこと
ここに質問の内容を詳しく書いてください。
Railsで投稿の編集の作成しようとしているのですが、下記のエラーが出て困っています。過去の質問から<% @tweet = Tweet.new unless @tweet %>とビューファイルに打ち込んでも、newアクションが動作してしまい、編集ができません。アドバイスを頂きたいです。
発生している問題・エラーメッセージ
エラーメッセージ
First argument in form cannot contain nil or be empty
該当のソースコード
<div class="container"> <%= form_for @tweet do |f| %>←ここがひっかかてます <h1>編集する</h1> <div class="field"> ```ここに言語名を入力 ソースコード ``` コントローラー class TweetsController < ApplicationControllerdef index
@tweets=Tweet.all
end
def new
@tweet=Tweet.new
end
def create
@tweet=Tweet.new(tweet_params)
@tweet.save
end
def edit
@tweet=Tweet.find_by(id: params[:id])
end
def update
@tweet=Tweet.find_by(id: params[:id])
@tweet.update(tweet_params)
@tweet.save
end
def destroy
end
private
def tweet_params
params.require(:tweet).permit(:name, :description, :picture)
end
end
ビュー
<div class="container"> <%= form_for @tweet do |f| %> <h1>編集する</h1> <div class="field"> <p>タイトル</p> <%= f.text_field :name %> </div> <div class="field"> <p>コメント</p> <%= f.text_field :description %> <div class="field"> <%= f.file_field :picture %> </div><%= f.submit "編集" %>
</div><% end %>
ルート
Rails.application.routes.draw do
root 'tweets#index'
get 'tweets/new' =>'tweets#new'
post 'tweets' =>'tweets#create'
get 'tweets/:id/edit' =>'tweets#edit'
post 'tweets/:id/update' =>'tweets#update'
post 'tweets/:id/destroy' =>'tweets#destroy'
devise_for :users
end
試したこと
<% @tweet = Tweet.new unless @tweet %>をeditビューファイルに書き込む
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。