Рендеринг на определенных страницах через файл application.html.erb?

У меня есть поле поиска, которое я хочу отображать только на определенных страницах в разделе навигации в моем файле application.html.erb.

Как установить исключения? Это делается через главный контроллер приложения?


person Katie H    schedule 04.09.2013    source источник
comment
Например, какие условия вы хотите использовать для отображения окна поиска?   -  person Aman Garg    schedule 04.09.2013


Ответы (2)


Есть несколько способов сделать это.

Наиболее очевидный способ - использовать переменную экземпляра для отметки.

В вашем application.html.erb

<%= render 'search' if @search_box %>

И везде, где вы хотите показать поиск, установите для переменной экземпляра флага значение true.

def show
  @search_box = true
  ...
end

Редактировать

Вы также можете использовать фильтры Rails в своих контроллерах, если хотите, чтобы несколько действий отображали поиск.

before_action :flag_search_box, :only => [:show, :new, :all_kinds_of_controller_actions_where_i_wanna_show_search]

...

private

  def flag_search_box
    @search_box = true
  end
person Jason Kim    schedule 04.09.2013
comment
Извините, я забыл упомянуть, что я визуализирую свое окно поиска через партиал в application.html.erb, используя ‹% = render 'search'%›, когда кто-то пытается войти в систему через devise, я получаю ужасную ошибку, которая нормально, я хочу, чтобы окно поиска отображалось только на определенных страницах. - person Katie H; 04.09.2013
comment
Это нормально. Идея осталась прежней. Вы можете отобразить частичный поиск только для определенных представлений с помощью переменной экземпляра флага. - person Jason Kim; 04.09.2013
comment
Огромное спасибо! Ты спасатель! :) - person Katie H; 04.09.2013
comment
Ага, я это сделал? Не уверен, мой рейтинг такой дерьмовый, я не думаю, что могу ставить какие-либо ответы. - person Katie H; 04.09.2013
comment
Спасибо. Вы сделали это сейчас. - person Jason Kim; 04.09.2013

Я мог бы предложить разместить поле поиска не на странице application.html, а, возможно, на отдельных html-страницах, на которых вы хотите, чтобы оно отображалось. Вы можете сделать поиск частичным, чтобы получить к нему доступ с других страниц с помощью всего одной строчки кода.

person challeng    schedule 04.09.2013