/ / Obsługa niezdefiniowanej zmiennej - ruby ​​na szynach, ruby, ruby ​​na szynach-3, częściowe widoki

Obsługa niezdefiniowanej zmiennej - ruby-on-rails, ruby, ruby-rails-3, częściowe widoki

Renderuję częściowy w jednym widoku:

<%= render "video", :video => @video, :video_id => "video_show_id" %>

i umieść ten kod w częściowym:

<% if video_id %>
<%= link_to "video", video.video_url, :class => "oembed", :id => video_id %>
<% else %>
<%= link_to "video", video.video_url, :class => "oembed" %>
<% end %>

Problem polega na tym, że ta częściowa jest renderowana w wielu miejscach w mojej aplikacji, aw tych innych widokach nie chcę przejść :video_id w częściowe. Dlatego moja aplikacja zgłasza błąd, który video_id jest niezdefiniowany. Mógłbym przejść :video_id => "" w częściowy w innych poglądach, ale ponieważ częściowe jest renderowane w wielu miejscach, jest to rodzaj bólu. Czy istnieje prostszy sposób, aby sobie z tym poradzić?

Odpowiedzi:

15 dla odpowiedzi № 1

Próbować defined? i nie to, że to naprawdę ma znaczenie, ale tak naprawdę to operator.

<% if defined? video_id %>

3 dla odpowiedzi № 2

Myślę, że lepszym sposobem na poradzenie sobie z tym jest stworzenie pomocnika, który następnie zarządza wartościami zmiennych, które należy podać do częściowego. Coś jak:

module VideoHelper

def show_video(video, options = {})
options[:id] ||= ""
render "video", :video => video, :video_id => options[:id]
end

end

Teraz zamiast konieczności wyświetlania długiej częściowej linii w widoku, można ją skrócić do wywołania show_video.

Odkryłem również, że w dłuższej perspektywie pozwala to na większą elastyczność i muszę mniej myśleć o tym, jakie zmienne częściowe potrzeby w tym momencie i czy są zdefiniowane.


1 dla odpowiedzi nr 3

Zmień czek na <% if defined? video_id %>