0

我的问题只是远程。

我的问题是在州控制器中,数据库中不存在国家。

但是如果我在远程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. 我没有看到列出一个国家。他们都没有出现。但同样,如果我将 c 放入控制台并尝试此操作,它工作正常。美国有 51 个州。他们都以完美的爱国婚姻召回自己的国家。

任何人都可以从这里发生的事情中得出正面或反面吗?

4

2 回答 2

2

我猜你在开发模式下运行控制台,在发布模式下运行你的应用程序。试试

rails c production

我敢打赌你的国家在生产数据库中不存在。

于 2012-04-15T13:20:48.463 回答
2

我将这个答案归类为不比“部分和可能”更好。考虑发布您的视图代码以帮助澄清您的问题。无论哪种方式,也许这个调试建议可以让你得到你的答案。

您是否看到了与两种不同 Rails 环境相关的行为?尝试Rails.env在这两种情况下显示,然后查看您的 config/database.yml 文件。在该文件中,您可能会看到项目的每个 Rails 环境的不同数据库。不同的环境可能有“测试”、“生产”和“开发”等名称。您可能会注意到,为每个环境连接到的列出的数据库是不同的。如果您确保countries“rails c”和您的应用程序使用的环境的数据库中填充了“”(和其他相关表),那么行为应该相似。

更多关于 Rails.env的信息

于 2012-04-15T13:02:42.657 回答