有两种型号:名称和:rat1。每个名称在rat1中可能具有或不具有评级。我希望能够显示我现有的所有评分,并为那些不存在的评分提供N / A.
的routes.rb
resources :names do
resource :rat1
end
names.rb
has_one :rat1
rat1.rb
belongs_to :names
我目前正在尝试将html表转换为可以导出到javascript表的xml块。我想做相同的事情。
<%= @name.rat1.rating || 'N/A' %>
但是当我尝试
时xml.tag!("cell", @name.rat1.rating || 'N/A')
它不起作用。如果它是nil则抛出一个nil类错误并失败。
答案 0 :(得分:1)
你可以试试这个,也许评估错了,因为你错过了括号:
xml.tag!("cell", (@name.rat1.rating || 'N/A'))
修改强>
您可以执行以下操作:
xml.tag!(cell, (@name.rat1.rating.present? then @name.rat1.rating else "N/A" end ))
为您节省一些代码。
<%= if @name.rat1.rating.present? then @name.rat1.rating else "N/A" end %>
首先检查@ name.rat1.rating是否存在,如果是,则呈现@ name.rat1.rating。它不能是零,因为你已经通过现在检查了吗?方法。如果@ name.rat1.rating不存在,它将遵循else条件并返回“N / A”。
答案 1 :(得分:0)
所以我的解决方案最终成为以下内容。我在names_helper.rb
中创建了一个帮助方法def show_rating(rating)
if rating.present?
rating.rating
else
"N/A"
end
end
我在xml中提供它的方式是
xml.tag!("cell", show_rating(name.rat1))
这样我在尝试拉取.rating值之前检查rat1模型的当前状态。
感谢您的帮助!