Условное отображение ссылок в рельсах - PullRequest
0 голосов
/ 03 октября 2011

На моей странице есть панель фильтров.Панель всегда должна быть на месте, но только когда я нахожусь на странице сведений, я хочу показать ссылку <- назад к списку внутри нее.В противном случае полоса фильтра должна быть пустой.Какой самый элегантный способ сделать это в рельсах 3 или 3.1? </p>

Спасибо, Томас

Ответы [ 2 ]

1 голос
/ 03 октября 2011

Для возврата на предыдущую страницу вы можете использовать link_to "Back", :back

Чтобы показать или скрыть ссылку, вы можете использовать методы controller_name и action_name с условным условием if/unless.

0 голосов
/ 04 октября 2011

Из вашего вопроса и комментария у вас следующая структура:

application.html.erb:
...
<section id="filter-bar"> 
  <section id="filter"></section> 
</section>

Я вижу там два разных варианта, как включить вашу ссылку условно:

  1. Делая if-then в вашем файле application.html.erb
  2. Включением yield с символом, обозначающим контекст.

Вот псевдокод для этого:

  1. решение

    application.html.erb:
    ...
    <section id="filter-bar"> 
      <section id="filter">
        <% if controller_name == 'user' && action_name == 'show' %>
          <%= link_to "Back", :index %>
        <% end %>
      </section> 
    </section>
    
  2. решение

    application.html.erb:
    ...
    <section id="filter-bar"> 
      <section id="filter">
        <%= yield(:filter) %>
      </section> 
    </section>
    
    view.html.erb:
    <%- content_for :filter do %>
      <%= link_to "Back", :index %>
    <% end %>
    ...
    
    index.html.erb:
    // No content_for section in the file, so it will be empty here.
    

Первое решение более простое, гораздо более сжатое, но вся информация, если что-то включено или нет, содержится в одном файле. Если это сильно изменилось, это может быть горячей точкой в ​​вашем приложении. Второй - более объектно-ориентированный, но, возможно, больше нужно изменить и подумать. Но оба будут работать на вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...