-2

我不知道如何使用if语句将数据输入用户与数据库进行比较。我想实现用户可以输入产品的条形码,并且应用程序会查看该代码是否已存储。如果找到,您可以发送以下表单,否则他们会向用户发送警告消息。这是您应该去的表格及其各自的控制器。

if 语句必须使用的形式:

<%= @medicinas.each do |p| %> 
INGRESE EL CÓDIGO DE BARRA DEL PRODUCTO QUE DESEA AGREGAR:

<% if codigo == @medicinas.codigo %>
INGRESE OTRO CÓDIGO DE BARRAS, EL QUE ESTA UTILIZANDO YA SE ENCUENTRA ALMACENADO

<% else %> AGREGAR MEDICAMENTO end 

控制器形式:

def buscarcrear
  @medicinas = Medicamentos.all
end

现在我有这个错误:#<#:0x2e96770> 的未定义局部变量或方法 `codigo' 提取的源(在第 33 行附近):

30:
31: 32: <% @medicinas.each 做 |p| %> 33: <% if codigo == @p.codigobarras %>

我能做些什么?

4

2 回答 2

2

我认为您所做的if/else声明大多是正确的。不过,请确保该end语句也是 ERB 样式<% end %>

<% if codigo == @medicinas.codigo %>
  INGRESE OTRO CÓDIGO DE BARRAS, EL QUE ESTA UTILIZANDO YA SE ENCUENTRA ALMACENADO
<% else %>
  AGREGAR MEDICAMENTO
<% end %>

@medicinas.codigo除非出于某种原因,该集合响应 ,否则您可能会遇到问题codigo,我对此表示怀疑?所以也许你是打算打电话if codigo == p.codigo来的?即,向特定的医学实例询问其codigo.

于 2013-09-09T15:10:59.850 回答
0

耶稣,您不需要在视图或控制器上添加它,将其添加为模型上的验证,如下所示:

class Medicina < ActiveRecord::Base
 validates_uniqueness_of :codigo
end

然后在您的控制器上,检查项目是否已保存:

if @medicina@.save
  redirect_to .....
else

end

查看指南的这一部分,了解如何在视图上正确显示错误:

http://edgeguides.rubyonrails.org/active_record_validations.html#working-with-validation-errors

于 2013-09-09T15:11:55.130 回答