ruby-on-rails – Rails 4:如何在没有选择任何内容的情况下处理提交的表单?

对不起,如果标题有点令人困惑.我有一个带有字段名称的Item的表单.有一个文本字段,用户可以在其中输入名称并提交.但是如果用户没有输入任何内容并点击提交,Rails会给我一个未找到的参数:项目错误,我不知道该解决这个问题.

items_controller.rb

def new
  @item = Item.new()

  respond_to do |format|
    format.html
    format.json { render json: @item }
  end
end

def create
  @item = Item.new(item_params)

  respond_to do |format|
    if @item.save
      format.html { redirect_to items_path }
      format.json { render json: @item,status: :created,location: @item }
    else
      format.html { render action: 'new',:notice => "Input a name." }
      format.json { render json: @item.errors,status: :unprocessable_entity }
    end
  end
end

private

def item_params
  params.require(:item).permit(:name)
end

应用程序/视图/项目/ new.html.haml

= form_for @item do |f|
  = f.label :name
  = f.text_field :name
  = f.submit "Submit"

params.require(:item)部分是导致错误的原因.当params [:item]不存在时,处理错误的约定是什么?

解决方法

答案已经很晚了,但我还是会为其他人写的.如 rails guides中所述,您需要在强参数中使用fetch而不是require,通过使用fetch,如果没有任何内容作为输入传递,则可以提供认值.就像是:

params.fetch(:resource,{})

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...