2016-09-22 12 views
0

残念ながら、私たちのRuby Developerは郊外です。返すまで回避策が必要な問題があります。私はそれを見つけることを任されています。Ruby on Rails - 未定義のメソッド - Rails 3.2.13

私たちのデータベースビューhr_accounts_viewにアクセスしようとしていますが、これは完全に異なるテーブルを使用して既存のページに組み込む必要があるデータです。私たちが取り入れようとしているのは、ステータスの列です。モデル/コントローラ/ビューを可能な限り単純に保つために、私は非常に努力しました。

マイhr_account_viewモデル:

class HrAccountView < ActiveRecord::Base 

    self.table_name = 'hr_accounts_view' 

    include Savable 

    # belongs to :hr_account 
    belongs to :employee, foreign_key: :id 


    validates :Status, presence: true 



    end 

Hr_Account_Viewsコントローラー:

class HrAccountViewsController < ApplicationController 

load_and_authorize_resource 

def show 
    @HrAccountView.Status = HrAccountView.Status 
end 

private 

end 

私はそれはと相関させるための試みでは、ビュー内での独自のフォルダにビューをも分離しました新しいコントローラ。このページは一般的なショーページに表示されています。私たちのショーから呼び出され

ページ、hraccountsview/_apptment.html.erb:

<table> 
    <tr> 
    <td> 
    Status<br /> 
     <%= display_text_field @HrAccountView.Status %> 
    </td> 
    </tr> 
</table> 

私はを経て、この問題を参照してポストのトンを読んで、問題は次のようになりように見えるしましたコントローラの宣言はありませんが、私はあらゆる種類の組み合わせを試しました。残念ながら、私がルビーとレールで実際にやったことのほとんどは、マイナーなページの変更といくつかの検索機能ですが、追加のテーブル/ビューを追加する必要はありません。

エラーメッセージによると、Nill:NillClassの未定義のメソッド 'Status'があり、レンダリングされているページの5行目で発生しています。 レスキュー・ニルを投げると、ページには少なくともヘッダーが表示されますが、データは表示されません。プレビューされているレコードには、現在ステータス列のデータが入力されています。これはコントローラーの代わりにモデルに問題があると私に導いていますが、現時点では、私は車輪を回転させて、欠落している接続がどこにあるのか把握しようとしています。

誰かが私が接続を逃しているというアイデアはありますか?

あなたは大歓迎です!

Railsのバージョン3.2.13 データベースのバージョン:SQLそれがnilオブジェクトですので、私は何かが欠けていない限り、2012

+0

ここではいくつかのケースの交換が行われています。 \ @hraccountviewと\ @HrAccountViewは同じものであるはずですか? –

+0

この新しいコードはありますか?または既存のコードを修正しようとしていますか? – zetetic

+0

彼らは同じことになっています。私は投稿する前に気付かなかった。 – Live2Learn

答えて

0

は役立つかもしれないいくつかの規則があります。したがって:

validates :status, presence: true 

インスタンス変数と同じです。例えば。:

def show 
    @status = HrAccountView.Status 
end 

私はHrAccountView.Statusも間違っている可能性があります。コントローラーで何が起こっているのかを確認する必要があります。通常、要求のパラメータ値を使用して、モデル上でfindを実行する操作がいくつかあります。

コントローラにおける変数名とビューが一致しなければならない:Rubyで

<%= display_text_field @status %> 

を大文字の文字列(例えばStatus)が一定であり、小文字の文字列は、変数またはメソッドへの参照です。接頭辞が '@'の場合は、インスタンス変数への参照です。

+0

これはトリックでした。ケースを交換することで、必要な情報を取り戻すことができ、もはやエラーが発生しなくなりました。すでに100回も試みたような気がしましたが、どこかで同期が取れていないと思います。 – Live2Learn

0

def show @HrAccountView.Status = HrAccountView.Status end

は、@HrAccountViewはあなたがアクセスすることはできませんを意味し、どこにも定義されていません。プロパティーStatusが表示されます。 @HrAccountView = HrAccountView.find(params[:id])のように、最初に何かを宣言する必要があります。これはあなたのビュー(見つかった場合)からあなたの変数に一つのレコードを読み込みます。

属性(列のモデルバージョン)が小文字で指定されています

関連する問題