检查没有?,空白?

时间:2012-02-20 22:53:33

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个模型,由于某种原因,我试图告诉rails如果没有创建任何内容然后渲染添加一个新的显示链接。

<% if @show != blank? %>
  <%= link_to 'Add a new show', new_show_path %></br>
<% else %>
 <%= render(:partial => 'shows/show', :locals => {:show => @profile.shows.last}) %>
<% end %>

它添加了添加新节目链接,但是一旦创建节目,我仍然只看到链接而不是部分。如果我创建节目并将渲染放在顶部,那么我可以看到它,但如果我删除节目它会返回一个错误。

我也试过这些

<% if @show.present? %>
 <%= render(:partial => 'shows/show', :locals => {:show => @profile.shows.last}) %>
<% else %>
 <%= link_to 'Add a new show', new_show_path %></br>
<% end %>


<% if @show.blank? %>
 <%= link_to 'Add a new show', new_show_path %></br>
<% else %>
 <%= render(:partial => 'shows/show', :locals => {:show => @profile.shows.last}) %>
<% end %>


<% if #{model} nil? %>
  <%= link_to 'Add a new show', new_show_path %></br>
<% else %>
  <%= render(:partial => 'shows/show', :locals => {:show => @profile.shows.last}) %>
<% end %>

似乎永远不会给我我想要的两端。它的ethiers显示链接和nevers显示部分一旦创建或它显示部分但但当我删除它时它给我一个错误。

我如何告诉rails如果没有创建节目来渲染添加新链接,并且一旦创建了一个节目来渲染部分?

2 个答案:

答案 0 :(得分:1)

你实际上是通过个人资料过滤这个吗?看起来您正在为个人资料的最后一个节目呈现页面。 (@profile.shows.last

<% show = @profile.shows.last %>
<% if show.blank? %>
  <%= link_to 'Add a new show', new_show_path %>
  <br />
<% else %>
  <%= render 'shows/show', :show => show %>
<% end %> 

答案 1 :(得分:0)

使用.blank?您试图判断它是否为空的全局变量的方法。如果是数组或哈希。使用.nil?如果它应该是其他任何东西。