Rails: изменение класса элемента из контроллера - PullRequest
4 голосов
/ 13 марта 2012

Я форматирую меню, чтобы заголовок окрашивался по-разному после того, как вы нажали на него.Я хотел бы использовать один и тот же шаблон haml для каждого представления и хотел бы, чтобы контроллер изменил класс конкретного html-элемента.Как настроить таргетинг на определенные HTML-элементы из контроллера и добавить к ним класс?

Вот пример:

Haml:

%tr
  %th
    %a#name-header= link_to "Name", people_path({:sort => 'by_name'})
  %th Date
  %th Description
  %th More Info

Контроллер:

def index
  case params[:sort]
  when "by_name"
    @people = Person.find(:all, :order => "name")
    #How can I change the class of the th element here
  else
    @people = Person.all
  end
end

Спасибо!

Ответы [ 2 ]

5 голосов
/ 13 марта 2012

Код контроллера

def index
  @people, @klass = case params[:sort]
  when "by_name"
     [Person.order(name: :asc), "foo"]
  else
     [Person.all, "bar"]
  end
end

Посмотреть код

Класс css для tr равен foo или bar на основе параметра sort:

%tr{class: @klass}
  %th= link_to "Name", people_path(sort: "by_name"), id: "name-header"
  %th Date
  %th Description
  %th More Info
1 голос
/ 13 марта 2012

Вы не можете напрямую изменить класс html-элемента из контроллера.

Похоже, ваш класс будет основан на params[:sort].Вы можете проверить это в шаблоне, чтобы получить соответствующий класс CSS.Возможно, было бы чище перевести это в помощника.

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