Rails отображает разные представления в зависимости от контроллера

У меня есть страница навигации по вкладкам в моем приложении rails, которая используется во всех моих представлениях. Внутри у меня есть небольшая текстовая область, которая должна меняться в зависимости от страницы, на которой находится пользователь.

В настоящее время я делаю это, добавляя переменную в контроллер и используя ее в частичном пути рендеринга, например:

class Myapp::WebsitesController < MyappController
  def set_up
    @page = 'websites/left_text_info'
  end 

а затем в моем частичном:

<%= render :partial => @page %>

Это работает, но не похоже на лучший «рубиновый» способ ведения дел. Может ли кто-нибудь посоветовать лучший способ сделать это?

Спасибо


person Tom Kadwill    schedule 26.06.2012    source источник


Ответы (1)


Вы можете использовать вспомогательный метод controller_name непосредственно в своем представлении и пропустить часть контроллера:

<%= render "#{controller_name}/left_text_info" %>

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

module ApplicationHelper
  def text_area_content
    case controller_name
    when "users"
      "content for users"
    when "articles"
      "content for articles"
    else
      "other content"
    end
  end
end
person Michał Szajbe    schedule 26.06.2012
comment
Спасибо, оба они кажутся более чистыми, чем добавление пути к контроллеру, как я делал ранее. - person Tom Kadwill; 26.06.2012