我有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'
答案 0 :(得分:1)
问题出在您的控制器中,如果按名称找到,则只返回Bar
。类似的东西:
@bar = Bar.find(name: params[:bar_name]) || nil
您尝试按名称查找Bar
,但未找到时您尝试访问Bar.id
。