不知道如何使用if语句

时间:2013-09-09 15:01:28

标签: ruby-on-rails

我不知道如何使用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

现在我有这个错误:未定义的局部变量或方法`codigo'用于#&lt;#:0x2e96770&gt; 提取的来源(第33行):

30:
31: 32:&lt;%@ medicinas.each do | p | %GT; 33:&lt;%if codigo == @ p.codigobarras%&gt;

我能做什么?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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