Как отобразить содержимое, которое отличается между контроллерами и методами в макете приложения? - PullRequest
0 голосов
/ 29 апреля 2009

Я пытаюсь отобразить виджет обратной связи javascript в моем файле application.rhtml по умолчанию в приложении rails. Он появится только на подмножестве страниц, распределенных по различным контроллерам.

Попытка выяснить лучший способ сделать это.

Одной мыслью было сделать что-то вроде этого:

<%= render :partial => "layouts/feedback_tab"  if @show_feedback_tab == true %>

и затем установка @show_feedback_tab в каждом методе каждого контроллера. это кажется слишком сложным. Вторая мысль заключалась в том, что я могу по умолчанию @show_feedback_tab установить значение true и установить значение false для соответствующих отдельных методов, где я не хочу показывать это. но глобальная переменная кажется неправильной, и метод в application_controller не будет работать (я думаю), так как отображение зависит от вызываемого метода.

Есть мысли?

1 Ответ

1 голос
/ 29 апреля 2009

Вы можете написать метод в application_controller.rb:

def show_feedback_tab?
  if params[:controller] == :user && params[:action] == :index
    return true
  end
  ...
  or put here any other logic
  ...
  false
end

и добавьте его как вспомогательный метод (в application_controller.rb):

helper_method :show_feedback_tab?

тогда вы можете использовать его в следующих представлениях:

<%= render :partial => "layouts/feedback_tab"  if show_feedback_tab? %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...