Я получаю неопределенную ошибку метода здесь, и я не знаю почему. Это работает, пока я не попытаюсь отправить новую форму.
Есть идеи?
class TweetsController < ApplicationController
before_action :set_tweet, only: [:show, :update, :destroy]
before_action :authenticate_user!, only: [:new, :index, :show, :create]
def new
@tweet = current_user.tweets.build
end
def index
@tweets = Tweet.all
end
def show
@tweet = Tweet.find(params[:id])
end
def create
@tweet = current_user.tweets.build(tweet_params)
respond_to do |format|
if @tweet.save
format.html { render notice: 'Tweet was successfully created.' }
format.json { render :show, status: :created, location: @tweet }
else
format.html { render :new }
format.json { render json: @tweet.errors, status: :unprocessable_entity }
end
end
end
def destroy
@tweet = Tweet.find(params[:id])
@tweet.destroy
respond_to do |format|
if @tweet.destroy
format.html { render notice: 'Tweet was successfully removed.' }
format.json { render :index, status: :destroyed, location: @tweet }
end
end
end
private
def set_tweet
@tweet = Tweet.find(params[:id])
end
def tweet_params
params.require(:tweet).permit(:user_id, :content)
end
end
Моя форма
<%= simple_form_for @tweet do |f| %>
<%= f.label :content %>
<%= f.text_field :content %>
<br><br>
<%= f.submit %>
<% end %>
Когда я пытаюсь отправить форму, я получаю
undefined method `tweet' for #<Tweet:0x00007f64b90ad988>
во второй строке действия create @ tweet.save
Started POST "/tweets" for ::1 at 2020-03-19 12:33:19 +0000
Processing by TweetsController#create as HTML
Parameters: {"authenticity_token"=>"qHs3m6KUuUb2nA3w+o4T7C7xTm+6f8iPHEv6ur4UvLs+fu+OAMgxCSVkGM0tBxjfzS/36HoTpEil9R+SQW/sfA==", "tweet"=>{"content"=>"cdzcdzc"}, "commit"=>"Create Tweet"}
User Load (1.8ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 2], ["LIMIT", 1]]
Completed 500 Internal Server Error in 16ms (ActiveRecord: 1.8ms | Allocations: 5089)
NoMethodError (undefined method `tweet' for #<Tweet:0x00007f1d189b2490>):
app/controllers/tweets_controller.rb:23:in `block in create'
app/controllers/tweets_controller.rb:22:in `create'
Started POST "/__web_console/repl_sessions/29c1187effa0e72e597bf7e21a7d198b/trace" for ::1 at 2020-03-19 12:40:57 +0000
Started POST "/__web_console/repl_sessions/29c1187effa0e72e597bf7e21a7d198b/trace" for ::1 at 2020-03-19 12:40:59 +0000
Кто-нибудь знает, что я делаю не так? Все остальное работает, пока я не попытаюсь отправить новую форму.
Добавлена ошибка из командной строки.