1

オブジェクトの 1 つにビューを追加し、対応するメソッドとルートも追加しましたが、ビューを読み込めません。

NoMethodError in Scans#parse

Showing J:/code/vsdb/app/views/scans/parse.html.erb where line #18 raised:

undefined method `parse' for #<Scan:0x23b0590>
Extracted source (around line #18):

15: 
16:   <div class="field">
17:     <%= s.label :parse %><br />
18:     <%= s.text_field :parse %>
19:   </div>
20: <% end -%>

Scan コントローラーのメソッドを次に示します。メソッドはそこにあるので、エラーメッセージが本当に何を訴えているのかわかりません。サーバーを再起動してみました。私はこの方法でもっとやることを計画しています。今のところビューを表示したいだけです。

def parse
  @scan = Scan.new
end  
4

2 に答える 2

1

The error is complaining about parse not being a method of your Scan model (not your controller). In this context parse will be a method defined automatically by Rails for one of Scan's attributes but in this case it's missing.

If you have added an attribute called parse to Scan using a migration you might need to run rake db:migrate.

于 2012-05-18T13:43:15.493 に答える
1

通常、Rails ビューはコントローラーにアクセスできません。呼び出す必要のあるコントローラー メソッドがある場合は、コントロールをビューに渡す前にアクションで実行する必要があります。

あなたの場合、クラス@scanのインスタンスであるという変数があります。Scanこれは、ビューがメソッドを見つけようとしている場所です。

コメントで指摘されているように、特定のメソッドをビューに公開する「ヘルパー」メソッドとして宣言することで、この制限を回避できます。

ScanController < ApplicationController

  helper_method :parse

  def parse
    @scan = Scan.new
  end

  ...

end
于 2012-05-18T13:46:02.293 に答える