0

私の問題はほんのわずかです。

私の問題は、States Controllerでは、がデータベースに存在しないことです。

しかし、リモートではrails c、Countryは機能します。国と国家との関係は機能します。逆もまた同様で、どちらも両方について多くの情報を持っています。

戦場(SFW):

class Admin::StatesController < Admin::ResourceController
  #belongs_to :country
  # ^^ This default line with spree will break the app because once this controller is touched, Country is nil in this part of the app.
  before_filter :load_data, :except => [:index]

  def index
    #@country = Country.first
    #@country ||= Country.find_by_iso("US")
    # ^ Does not work because no countries are in the database from the app. Even though countries are accessible in rails console.

    @trip = "yes"
    @users = User.all
    @countries = Country.all
    # ^^ Country as a class exists but it is not populated in this part of the app.

したがって、このコントローラーコードを使用して、これをビューにスローすると、次のことがわかります。

  1. の値@trip。これは、コントローラーがデータを送信できることを意味します。
  2. @usersの値。これは、データベースが機能していることを意味します。すべてのユーザーとそのメールを一覧表示できます
  3. 記載されている国は1つもありません。それらのどれも表示されません。しかし、繰り返しになりますが、cをコンソールに接続してこれを試してみると、正常に機能します。アメリカ合衆国には51の州があります。そして、彼ら全員が完全な愛国的な結婚生活で彼らの国に呼び戻します。

誰かがここで起こっていることから頭や尾を作ることができますか?

4

2 に答える 2

2

私はこの答えを「部分的でありそうな」に過ぎないと分類します。質問を明確にするために、ビューコードを投稿することを検討してください。いずれにせよ、おそらくこのデバッグのアドバイスはあなたにあなたの答えを与えるかもしれません。

2つの異なるRails環境に関連する動作が見られますか?Rails.env両方の場合に表示してみてから、config/database.ymlファイルを確認してください。そのファイルには、プロジェクトのRails環境ごとに異なるデータベースが表示される場合があります。異なる環境には、「テスト」、「本番」、「開発」などの名前が付いている場合があります。環境ごとに接続されているリストされたデータベースが異なることに気付くかもしれません。' countries'(および他の関連するテーブル)が' rails c'およびアプリケーションによって使用される環境のデータベースに入力されていることを確認すると、動作は次のようになります。似ている。

Rails.envの詳細はこちら

于 2012-04-15T13:02:42.657 に答える
2

コンソールを開発モードで実行し、アプリをリリースモードで実行していると思います。試してみてください

rails c production

あなたの国は本番データベースに存在しないと思います。

于 2012-04-15T13:20:48.463 に答える