-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

今、私はこのエラーを持っています: undefined local variable or method `codigo' for #<#:0x2e96770> Extracted source (around line #33):

30:
31: 32: <% @medicinas.each do |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 に答える