【问题标题】:param is missing or the value is empty rails controller参数丢失或值为空 rails controller
【发布时间】:2016-06-16 11:54:39
【问题描述】:

我有 3 个视图,带有创建表单,但示例 def new def create 效果很好,但其他 def 不起作用...

RateFormController.rb

class RateFormController < ApplicationController
    def new
        @rateform = RateForm.new
    end

    def create
      @rateform = RateForm.new(rate_params)
      if @rateform.save
        redirect_to :root
        RateFormMailer.rate_email(@rateform).deliver_now
      end
    end

    def encreate
       @rateform = RateForm.new(rate_params)
        RateFormMailer.rate_email(@rateform).deliver_now
       # ContactsMailer.sample_email(@contact).deliver_now
    end

    def rucreate
       @rateform = RateForm.new(rate_params)
       if @rateform.save
        redirect_to :root
        RateFormMailer.rate_email(@rateform).deliver_now
        end
    end



  private
    def rate_params 
      params.require(:rate_form).permit(:name, :mail, :comment, :ratename, :phone)
    end

end

127.0.0.1:3000/rate_form/encreate

RateFormController#encreate 中的 ActionController::ParameterMissing 参数缺失或值为空:rate_form

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

我认为它们是空的,因为您为它们使用了GET 方法

 rate_form_encreate_path    GET /rate_form/encreate(.:format)   rate_form#encreate
 rate_form_rucreate_path    GET /rate_form/rucreate(.:format)   rate_form#rucreate

这些是GET 类型的路线

请将它们更改为POST 类型。

match '/rate_form/encreate' => 'rate_form#encreate', via: [:post], :as => :rate_form_encreate
match '/rate_form/rucreate' => 'rate_form#rucreate', via: [:post], :as => :rate_form_rucreate

更新:

match '/rate_form/ennew' => 'rate_form#ennew', via: [:get], :as => :rate_form_ennew
match '/rate_form/runew' => 'rate_form#runew', via: [:get], :as => :rate_form_ennew

【讨论】:

  • 我做到了,之后我应该创建新的 def new 的副本?对吗?
  • 是的,你必须这样做
  • 我做了一个 def runew rateform = RateForm.new end && def ennew rateform = RateForm.new end 之后我应该再次制作路线...我不知道我应该添加什么
  • 只需创建方法,然后在您的路线中添加以下内容
  • 然后我将如何整合 def ennew 和 def encreate
【解决方案2】:

只需在routes.rb文件中添加以下路由

resources :rate_forms do
  get :encreate
  get :rucreate
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多