2016-07-07 100 views
0

初学者警报!
我在我的user#show视图中有此IF声明。我查了一下,如果在铁轨控制台任何职位user_id:7,它返回的结果,但是当我看着http://localhost:3000/users/7,我无法看到评论:无法从我的if!= nil语句获得正确的结果

您没有任何职位呢。继续发帖!

<% @posts.each do |post| %> 
<% if @posts != nil %> 
<%= link_to "#{post.title}", post_path(post) %> 
<% else %> 
<p> You don't have any post yet. Keep posting! </p> 
<% end %> 
<% end %> 

谁能帮助我?谢谢!

回答

0

我想你需要的是:

<% if @posts.present? %> 
    <% @posts.each do |post| %> 
    <%= link_to "#{post.title}", post_path(post) %> 
    <% end %> 
<% else %> 
    <p> You don't have any post yet. Keep posting! </p> 
<% end %> 
+0

是的,首先'@ posts'可能会返回一个空数组,并且在Ruby中[]!= nil' – oreoluwa

+0

即空数组不等于0 – oreoluwa

+0

第二个通过'@ posts'的循环应该已经嵌套检查是否存在帖子 – oreoluwa

0

如果变量@posts是空的,你不能让<p> You don't have any post yet. Keep posting! </p>

User.find(7).posts将返回一个阵列。 an empty array != nil

试试这个:

<% if [email protected]? %> 
    <% @posts.each do |post| %> 
    <%= link_to "#{post.title}", post_path(post) %> 
    <% end %> 
<% else %> 
    <p> You don't have any post yet. Keep posting! </p> 
<% end %> 
+2

'除非... ...否则是end'主要在Ruby社区皱起了眉头。而是使用'if ... else ... end' – oreoluwa

+1

你是对的。我改变了我的回答 –

+0

@孙悟空,我不会让别人的个人喜好影响你的代码。如果它读得很好并且可以维护,请保留它。在这种情况下,我会选择'<%除非@ posts.empty? %>'或'<如果@posts%>'。 – Tass