Ruby on rails Rails:更改元素';来自控制器的类
我正在格式化一个菜单,这样在你点击它之后,标题的颜色就不同了。我希望对每个视图使用相同的haml模板,并希望控制器更改特定html元素的类。如何针对控制器中的特定html元素并向其添加类 以下是一个示例: Haml:Ruby on rails Rails:更改元素';来自控制器的类,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在格式化一个菜单,这样在你点击它之后,标题的颜色就不同了。我希望对每个视图使用相同的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 ind
%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
谢谢 您不能直接从控制器更改html元素的类
看起来您的类将基于
params[:sort]
。您可以在模板中进行检查,以生成适当的css类。将其移动到助手中可能会更干净。控制器代码
def index
@people, @klass = case params[:sort]
when "by_name"
[Person.order(name: :asc), "foo"]
else
[Person.all, "bar"]
end
end
查看代码
def index
@people, @klass = case params[:sort]
when "by_name"
[Person.order(name: :asc), "foo"]
else
[Person.all, "bar"]
end
end
tr
的css类是基于sort
参数的foo
或bar
:
%tr{class: @klass}
%th= link_to "Name", people_path(sort: "by_name"), id: "name-header"
%th Date
%th Description
%th More Info
那么我的haml可以访问params散列?还有,什么是分部?是的,它可以访问参数。我还意外地编写了partial而不是helper。分部只是一个分部模板,可以用来清理视图。Helpers位于app/Helpers目录中,您可以在其中放置方法来帮助清理视图。