5

タイトルがややこしくてすみません。Itemフィールドを持つ のフォームがありますname。ユーザーが名前を入力して送信できるテキスト フィールドがあります。しかし、ユーザーが何も入力せずにサブミットを押すと、Rails からparam not found: itemエラーが返され、誰がこれを回避すればよいかわかりません。

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] が存在しない場合のエラー処理の規則は?

4

3 に答える 3

0

私は個人的に強力なパラメータに切り替えていないので、次のようなものをどのように処理すればよいかわかりません:

 params.require(:item).permit(:name)

ただし、次のような方法でアイテムの存在をいつでも確認できます。

if params[:item].present?
   …
end
于 2013-07-19T21:29:28.793 に答える