0

私はfooフォームを持っています。フォームには次のように記載されています。

<%= text_field_tag :bar_name, '', id: "bar_name", class: "ajax-typeahead", data: {provide: "typeahead", source: @bar_options} %>

現在、ユーザーbarがデータベースにある a の名前を入力すると、すべて問題ありません。ただし、barデータベースで使用できない名前をユーザーが入力すると、次のエラーが発生します。

NoMethodError (undefined method `id' for nil:NilClass):
  app/controllers/foos_controller.rb:199:in `update'

これが起こらないようにするための適切な検証は何ですか? 現在私は持っています:

validates_presence_of :bar, 
                      :message => 'Please enter full bar name, 
                                   find by typing the first letters in the bar name'
4

1 に答える 1

1

Bar問題はコントローラーにあり、名前で見つかった場合にのみ返されます。何かのようなもの:

@bar = Bar.find(name: params[:bar_name]) || nil

名前で検索しようとしていますが、見つからBarない場合はアクセスしようとしていますBar.id

于 2013-10-08T14:08:45.883 に答える