2012-03-17 67 views
0

我有以下型号如何显示空表的模板?

class User < ActiveRecord::Base 
    has_many :collabos 
    has_many :files 
end 

我想显示一个条件部分,因此current_user可以创建一个collabo或文件,当这些模型是空的?

这是我的第一次尝试,但效果不佳。

<% if current_user.files.empty? || current_user.collabos.empty? %> 
    <%= "create a file/collabo" %> 
<% else %> 
    <%= yield %> 
<% end %> 

这种问题最好的办法是什么?

我觉得下面的图片是更好地告诉你我想要实现

+0

什么不顺利? – 2012-03-17 22:29:16

回答

1

你需要,而不是的一种行为:

<% if current_user.files.empty? and current_user.collabos.empty? %> 

然而,它始终是一个不错的主意,以创建用户实例的方法,如:

def has_files? 
    files.empty? ? false : true 
end 

,使之成为:

<% if current_user.has_files? and current_user.has_collabos? %> 

(和你总是可以创建一个has_files_and_collabos方法为好,如果它是可重用的代码)

+1

除了请不要做'布尔值? ? true:false' :)。在这种情况下,只需将该方法写成逆函数即可:'def has_files?; !files.empty ?;结束' – rfunduk 2012-03-17 22:38:20

+0

好吧,这是一个口味的问题,我更喜欢在这种情况下的三元组:)如果他们想要一个更简单,更容易阅读的版本,总是可以使用存在? – Spyros 2012-03-17 22:39:24

+0

我建议在Ruby中使用'&&'而不是''和',因为它们具有不同的优先级,'&&'的行为可能是最不让人惊讶的。例如。 'x =“one”和“two”'和'x =“one”&&“two”'将'x'设置为不同的值。在你的代码中,他们会做同样的事情,但如果你在其他地方使用它,它会咬你。 – 2012-03-17 22:44:28