0

我有foo一个表格。表格上有以下内容:

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

目前,当用户输入bar数据库中的名称时,一切正常。但是,如果用户输入的名称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 回答