Ruby on rails RoR:“创建”操作中的未定义方法错误

Ruby on rails RoR:“创建”操作中的未定义方法错误,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,我在这里得到一个未定义的方法错误,我不知道为什么。在我尝试提交新表单之前,它一直有效 有什么想法吗 class TweetsController < ApplicationController before_action :set_tweet, only: [:show, :update, :destroy] before_action :authenticate_user!, only: [:new, :index, :show, :create] def new

我在这里得到一个未定义的方法错误,我不知道为什么。在我尝试提交新表单之前,它一直有效

有什么想法吗

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 action@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
有人知道我做错了什么吗?在我尝试提交新表单之前,其他一切都正常

从命令行添加错误。

您接受tweet参数:

然而,您在DB中并没有而且显然也不需要这样的列。删除它:

params.require(:tweet).permit(:user_id, :content)

并修改表单,以防止将此参数传递给控制器

您在tweets表中有列tweet吗?没有,我有用户id和内容谢谢,我试过了,但是相同的错误您是否像我写的那样更改tweet参数方法?请编辑问题并提供tweets\u controller.rb的当前内容。另外,请在问题中加入完整的错误回溯。我用当前控制器和表单更新了开始问题
params.require(:tweet).permit(:user_id, :content)