如何在输入名称但是传递id时验证属性的存在?

时间:2013-10-03 19:19:12

标签: ruby-on-rails

我有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'

1 个答案:

答案 0 :(得分:1)

问题出在您的控制器中,如果按名称找到,则只返回Bar。类似的东西:

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

您尝试按名称查找Bar,但未找到时您尝试访问Bar.id