- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有 belongs_to
/has_many
Trainer
之间的关系和 Sportists
.我正在尝试遍历 view
中的值像这样:
<% @sportists.each do |s| %>
<%= s.name %> <%= s.surname %>
<%= s.trainer.city %>
<% end %>
和 Sportist
相关信息工作正常,但 trainers
- 没有。我得到标题中给出的错误。如果我尝试在 rails console
中执行此操作一切正常,所以应该建立良好的关系。
我尝试过的事情:
<% s.trainers.each do |t| %>
<%= t.city %>
<% end %>
这给了我 undefined method 'trainers'
错误,如果我尝试 s.trainer
我明白了
#<TRAINER:0X00000004CE7CB0>
那么解决办法是什么?
编辑
我的模型:
训练师
has_many :sportists
belongs_to :team
accepts_nested_attributes_for :sportists, :reject_if => :all_blank, :allow_destroy => true
运动家
belongs_to :trainer
Controller
@sportists = Sportist.all
最佳答案
您在下面的代码中得到了 undefined method 'city' for nil:NilClass
:
<% @sportists.each do |s| %>
<%= s.name %> <%= s.surname %>
<%= s.trainer.city %>
<% end %>
这意味着有一个 sportists
记录没有关联到它的 trainer
。因此,对于那个特定的运动列表记录,s.trainer
是 nil
并且您不能在 nil
对象上调用 city
。
要识别您没有关联的trainer
的sportist
记录,只需更新 View 代码如下:
<% @sportists.each do |s| %>
<%= s.name %> <%= s.surname %>
<%= s.trainer.try(:city) %>
<% end %>
这样即使您没有关联的 trainer
记录,也不会引发错误。在呈现的 View 中,只需查找未显示任何 city
的 sportlist
记录,即没有关联 的
。sportlist
记录>培训师
至于您收到的第二个错误 undefined method 'trainers'
<% s.trainers.each do |t| %>
<%= t.city %>
<% end %>
sportlist belongs_to trainer
,您只有动态方法trainer
(注意单数)可用,而不是trainers
(注意复数)。此外,s.trainer
将返回单个训练记录,因此您不能使用 each
方法对其进行迭代,因为它不是集合而是单个记录。
更新
理想情况下,您不应该允许在没有trainer
的情况下创建sportist
记录。您应该在 sportlists
表上创建的外键 trainer_id
上添加了一个 index
。 有了这个,您甚至不必使用 try
方法,您当前的代码将按原样运行。
关于ruby-on-rails - ActionView::Template::Error(nil:NilClass 的未定义方法 `city'):,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23479683/
我正在尝试为应用程序扩展 Ruby 的 NilClass,以便任何方法调用都将返回 nil(实际上是 self,新的扩展 nil)。目的是避免大量额外的 nil 检查逻辑,例如, results =
我正在尝试使用Rails应用程序中的devise来授予对Rack中间件中的Sinatra应用程序的访问权限。 我的config/routes.rb有: authenticate "admin" do
我使用 dbf gem 从 df 文件中读取数据。我写了一些代码: # encoding: UTF-8 require 'dbf' widgets = DBF::Table.n
我试图避免由于 NilClass 而导致的 NoMethod 错误。我的代码如下所示: @branded, @nonbranded, @unknown, @affiliate, @social, @r
我使用的是 rails 2.3.5 和 ruby 1.8.7。我正在构建一个简单的 TODO 管理器。我有属于用户的任务,而用户有很多任务。 我使用 acts_as_taggable_on_ste
上下文 - 我们有大量的 Chef 属性来执行我们的安装,现在已经为每个环境定义和更改了大约 3000 多个属性。 问题 - 有时 Chef Recipe 会引用不存在的属性 node[:mystuf
我目前使用的是: 20: Status: 但是,我仍然收到以下错误: ActionView::TemplateError (undefined method `status' for
请找到代码的一部分: button = Login_form.button_with(:name => 'Submit') loggedin_page = Login_form.submit(butt
NoMethodError位于/ nil:NilClass的未定义方法`page_media' indexapp/controllers/homepage_controller.rb before
正如我们所知,(几乎)Ruby 中的一切都是一个对象,它是一个类的实例。 nil 也是一个对象: 2.1.3 :016 > nil.object_id => 8 它是 NilClass 的一个实例:
我在 User#index 中有这段代码查看: 返回用户名: user1 user2 user3 ... 然后我将此代码移至 UserHelper : module UserHelper
我的目标是制作一个投票机,将候选人的选票计入总数。最终我想添加写入候选人的选项,但我遇到了这个错误: undefined method 'push' for nil:NilClass) at line
编辑 |或者另一个关于同一 object 主题的问题。我可以编写自己的类定义来使以下所有内容正常工作吗? o = WeirdObject.new puts "Object o evaluates as
这似乎是一个显而易见的问题,但我是新手。我正在尝试抓取 Rotten Tomatoes top 100 movie一个简单的 CLI 应用程序的列表。一切顺利,直到 hero.link 行我得到了 n
感谢您回答我之前的问题,但我遇到了一个新问题。 我正在创建一个自定义验证器,用于验证用户是否输入了干净的单词。这个在我的 UsersController 上用作验证方法。 我正在使用 Obscenit
我现在被这个错误困住了很长一段时间,已经走到了死胡同。 我得到了这个完全无用的错误 can't dup NilClass 情况是这样的。 我有一个类(class)与另一个类(class)有关系。说
我知道这是一百万次,但尝试了一切,我仍然收到此错误: $ rake db:migrate rake aborted! undefined method `accept' for nil:NilClas
Controller def show @dailies = Daily.where(store_id: params[:store]).order(created_at: :asc).by_mo
有人能帮我解决这个错误吗? NoMethodError in Posts#create Showing C:/Users/User/Documents/website/app/views/posts/
我有一个类似于这里的问题的问题,但删除数据库对我的项目来说不是一个可行的解决方案:Rails 5.2 ActiveStorage undefined method `signed_id' for ni
我是一名优秀的程序员,十分优秀!