2012-02-20 2 views
0

У меня есть модель, и по какой-то причине я пытаюсь сказать рельсы, если ничего не создано, а затем рендеринг добавляет новую ссылку на шоу.Проверьте, нет ли ?, Бланк?

<% 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 показывает частичную, однажды созданную или показывающую частичную, но когда я ее удаляю, она дает мне ошибку.

Как я могу сказать рельсы, что если нет шоу, созданного для рендеринга добавления новой ссылки, и как только появится шоу, созданное для рендеринга частичного?

+0

как вы определяете '@ show' – apneadiving

+0

try:' если определено? @ show' – apneadiving

+0

Вы пробовали '@ show.nil?' (не могу сказать, что вы имеете в виду под '# {model} nil?' – Adnan

ответ

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 %> 
+0

именно то, что я искал. Спасибо, также мне нужно включить' end' для первой строки '<% show = @ profile.shows.last%>'? – coletrain

+0

Нет, вам не нужно включать <% end %>, потому что это не цикл или другая форма блока, это однострочное задание. Тот, что там закрывает блок <% if %>. –

0

Использовать .blank? метод для глобальной переменной, которую вы пытаетесь определить, если она пуста. Если это массив или хэш. Использовать .nil? Если это должно быть что-то еще.

Смежные вопросы