当前位置: 首页 > 知识库问答 >
问题:

Rails Associations-nil的未定义方法:NilClass

邬阳
2023-03-14

Rails关联的基本问题如下表:

  • 商店:名称,网络
  • 产品:标题、价格、店铺id

关系定义为has_many并属于:

型号:

shop.rb

class Shop < ApplicationRecord
    has_many   :products
end

产品rb型

class Product < ApplicationRecord
     self.primary_key = "id"
     belongs_to :shop
end

控制器:

shops\u控制器。rb型

  def show
    @shop = Shop.find(params[:id])
 end

products_controller.rb

  def show
    @product = Product.find(params[:id])
  end

在商店视图中,我设法参考并显示每个商店的所有产品,没有问题:

<%= @shop.name %>
<%= @shop.network %>

  <% @shop.products.each do |product| %>
   <%= product.title %>
  <% end %>

但另一方面,在产品视图中,我无法从Shop表中显示网络信息:

  <%= @product.title %>
  <%= @product.shop.network %>

这将返回以下错误:

undefined method `network' for nil:NilClass

共有1个答案

高修伟
2023-03-14

正如用户jith所指出的-设置是正确的并且有效的。问题是找不到一个特定的shop_id。

因此,在处理关联时,请确保所有id都在另一个表中。

非常感谢。

 类似资料:
  • 我正在学习Ruby,我有一个无法理解的bug。我有一个方法,它接受一个字符串(行)数组,并删除所有行,直到包含模式的某一行。该方法如下所示: 这工作正常,生成的字符串(行)正确显示在我正在生成的网页上。 此外,我想删除该模式后面的所有非空行。我修改了方法如下: 令人惊讶的是(至少对我来说)这不起作用。在生成的网页上,我看到的不是内容,而是错误消息:Liquid error:nil类的未定义方法“[

  • 我想用ruby制作一个康威的生活游戏版本。我创建了一个网格类,其中@play\u area作为实例变量。然而,当我运行代码时,@play\u area在经过两次求值后显示为nil(当在行中求值时,如果@play\u area[x\u mod][y\u mod].alive)。为什么会这样? 编辑 以下是初始化函数: 以下是发生错误的函数: 对@play_area中每个单元格的检查显示每个单元格都正

  • 我用最新的Mac OS版本M1在MacBook Air上运行可可豆。我的问题是:当我运行时,我会得到以下输出(我会删除一点,因为其他方式会很长): nil的未定义方法“map”:NilClass 完全错误: LoadError-dlopen(/Library/Ruby/Gems/2.6.0/Gems/ffi-1.15.0/lib/ffi_c.bundle,9):未找到合适的图像。确实找到了:/Li

  • 我有一个非常基本的应用程序,由商店和属于商店的产品组成。我从产品表单中很好地提取了store ID,但每次尝试在产品视图中显示store中的属性时,都会出现未定义的方法错误。 products\u控制器。rb型 product.rb 产品表单(_form.html.erb) store.rb 以及有问题的产品视图(nil: NilClass的未定义方法“名称”): 使用Rails控制台查找属于我引

  • Good day我不确定发生了什么我怀疑eclipse,但在UserDetailsServiceImpl中它是定义的,因为我实现了spring的UserDetails服务,下面是我的代码 这是让人头痛的一行“UserDetails UserDetails=userDetailsService.loadUserByUsername(username)”提前感谢您