Ruby on rails ActionController::SubscriberControllerCreate中缺少参数

Ruby on rails ActionController::SubscriberControllerCreate中缺少参数,ruby-on-rails,Ruby On Rails,我觉得这是一个直截了当的问题,但似乎没有其他推荐的解决方案起作用。基本上,我想要的只是一个应用程序,它可以创建一个具有属性phone number的订户 用户控制器 class SubscribersController < ApplicationController def index end def new @subscriber = Subscriber.new end def create

我觉得这是一个直截了当的问题,但似乎没有其他推荐的解决方案起作用。基本上,我想要的只是一个应用程序,它可以创建一个具有属性phone number的订户

用户控制器

    class SubscribersController < ApplicationController
      def index
      end

      def new
         @subscriber = Subscriber.new
      end


      def create
        @subscriber = Subscriber.new(subscriber_params)
        @subscriber.save
      end

      def show
        @subscribers = Subscriber.all
      end

      def update
      end


      private
      def subscriber_params
        params.require(:subscriber).permit(:phone)
      end
    end

您的代码是不符合要求的,至少在rails约定方面是这样

添加一个新方法,该方法应显示表单,而不是create方法。然后将表单移到其中,并确保添加

def new
  @subscriber = Subscriber.new
end
在这个新方法中,您需要在create方法中创建记录。你可能想要这样的东西

# POST /subscribers
# POST /subscribers.json
def create
  @subscriber = Subscriber.new(subscribere_params)

  respond_to do |format|
    if @subscriber.save
      format.html { redirect_to @subscriber, notice: 'Subscriber was successfully created.' }
      format.json { render :show, status: :created, location: @subscriber }
  else
      format.html { render :new }
      format.json { render json: @subscriber.errors, status: :unprocessable_entity }
    end
  end
end

那么问题到底是什么呢?是否要保存记录而不使用:subscriber参数?现在还不清楚你到底遇到了什么问题。当您尝试按原样保存代码记录时会发生什么情况?发布一个发送参数的示例也可能有帮助,我们可能需要它来帮助您。我想创建一个新的订阅者,如果我按原样发布代码,它将在SubscribersControllercreate中显示错误ActionController::ParameterMissing,而不显示主页OK,你能发布发送的参数吗?当你提交formYes时,你应该能够在控制台中看到它们,以便运行我需要的程序。require:subscriber,然后我会得到参数:{xxxx=>✓, authenticity_token=>xxxxx=>subscriber=>555555},commit=>Create subscriber}未经许可的参数::utf8,:authenticity_token,:subscriber,:commit 0.1ms开始事务0.1ms回滚事务,如果我放入。permit:subscriber,:phone,我得到的结果几乎相同,但与:subscriber=>{phone=>88848488999}对,你的控制器坏了。您需要一个带有@subscriber=Subcriber.new的新操作,该新操作显示表单,当您点击save时,create方法使用post创建记录。你的问题是你从来没有那张新唱片可供使用
def new
  @subscriber = Subscriber.new
end
# POST /subscribers
# POST /subscribers.json
def create
  @subscriber = Subscriber.new(subscribere_params)

  respond_to do |format|
    if @subscriber.save
      format.html { redirect_to @subscriber, notice: 'Subscriber was successfully created.' }
      format.json { render :show, status: :created, location: @subscriber }
  else
      format.html { render :new }
      format.json { render json: @subscriber.errors, status: :unprocessable_entity }
    end
  end
end