我的问题只是遥远的。
我的问题是,在状态控制器中,数据库中不存在国家/地区。
但是如果我rails c
,则在遥控器上,国家有效。国家与国家的关系有效。反之亦然,他们都有很多关于这两者的信息。
战场(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.
所以使用这个控制器代码,如果我在我的视图中抛出它,我可以看到:
@trip
的值。这意味着控制器可以发送数据。任何人都可以从这里发生的事情做出正面或反面吗?
答案 0 :(得分:2)
我将此答案归类为“部分且可能性不高”。&#39;考虑发布您的视图代码以帮助澄清您的问题。无论哪种方式,也许这个调试建议可能会让你得到答案。
您是否看到与两种不同Rails环境相关的行为?尝试在两种情况下显示Rails.env
,然后查看config / database.yml文件。在该文件中,您可能会看到每个项目的Rails环境都有不同的数据库。不同的环境可能有诸如&#34; test&#39;,&#39; production&#39;和&#39; development。等名称。您可能会注意到,为每个环境连接的列出的数据库是不同的。如果您确保&#39; countries
&#39; (以及其他相关表格)填充在数据库中,用于&#39; rails c&#39;根据您的申请,行为应该是相似的。
更多关于Rails.env here。
答案 1 :(得分:2)
我猜你正在开发模式下运行控制台,而你的应用程序处于发布模式。尝试
rails c production
我打赌你的国家不存在于生产数据库中。