【问题标题】:NoMethodError at / undefined method `page_media' for nil:NilClassNoMethodError at / undefined method `page_media' for nil:NilClass
【发布时间】:2016-08-13 19:47:01
【问题描述】:

NoMethodError 在 / nil:NilClass 的未定义方法“page_media”

indexapp/controllers/homepage_controller.rb

  before_action :set_track_page_status
  def index
     @cms_page     = Page.find_by_content_filename("homepage.en.yml")
     @homepage_cms = HomepageCms.first
     @page_medium  = @cms_page.page_media.order("id ASC")
     @roots        = Category.roots
  end
end

如何在 Ror 上解决此问题?主页无法加载。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 error-handling rubygems


    【解决方案1】:

    @cms_page 似乎没有任何关联的page_medias。

    快速解决方法可能是:

    @page_medium  = @cms_page.try(:page_media).try(:order, "id ASC")
    

    【讨论】:

    • 它给出了另一个错误,我不知道为什么。 .row.thumbnail-image.catalogs .col-sm-4.item = link_to link_category("时尚配饰") do = image_tag("#{@page_medium[2].file.url 救援asset_url(@homepage_cms.image_custom_product_1)} ", class: "img-responsive")
    • p = @page_medium[2].additional_text |   = link_to link_category("男装") do = image_tag("#{@page_medium[3].file.url 救援asset_url(@homepage_cms.image_custom_product_2) }", class: "img-responsive") p = @page_medium[3].additional_text
    【解决方案2】:

    稍微修改一下:

    @page_medium  = @cms_page.page_media.order("id ASC") if @cms_page.page_media
    

    【讨论】:

    • nil:NilClass / undefined method `page_media' 处的 NoMethodError 仍然相同
    • before_action :set_track_page_status def index
    【解决方案3】:

    @cms_page 为零。所以检查数据库中是否真的有一个内容文件名等于“homepage.en.yml”的页面。 就像 Carson Cole 指出的那样(经过一些修改..):

    @page_medium  = @cms_page.page_media.order("id ASC") if @cms_page
    

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 2016-01-02
      • 2012-08-08
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多