jruby on Rails : 如何高亮当前页面用户当前所在的导航栏列表项
jruby on Rails : How to highlight the current navigation bar list item which the page user currently in
我只是第一次在 Rails 上尝试 jRuby。
在我的项目中,我想在导航栏中遍历 root/app/views/pages 下的三个页面。
我的导航栏是
<div class ="navbar">
<ul>
<li <%= class = is_active?("home") %> ><%= link_to 'Home', {:controller => 'pages', :action => 'home'} %></li>
<li><%= link_to 'About Us', {:controller => 'pages', :action => 'about'} %></li>
<li><%= link_to 'Contact Us', {:controller => 'pages', :action => 'contact'} %></li>
</ul>
</div>
我的 CSS 文件包含
.navbar .active {
background-color: #4CAF50;
color: white;
}
经过一番谷歌搜索后,我创建了一个助手
module PagesHelper
def is_active?(page_name)
"active" if params[:action] == page_name
end
end
在 project_root/app/helpers/pages_helper.rb 中,以便根据我当前所在的页面在导航栏项目中突出显示。
这给了我
app/views/layouts/application.html.erb:18: 语法错误,意外的 '='
...@output_buffer.append=( class = is_active?("home") );@输出...
... ^
actionview (4.2.6) lib/action_view/template.rb:296:in module_eval'
actionview (4.2.6) lib/action_view/template.rb:296:in
编译'
actionview (4.2.6) lib/action_view/template.rb:245:in block (2 levels) in compile!'
activesupport (4.2.6) lib/active_support/notifications.rb:166:in
仪器'
actionview (4.2.6) lib/action_view/template.rb:333:in instrument'
actionview (4.2.6) lib/action_view/template.rb:244:in
阻止编译!'
actionview (4.2.6) lib/action_view/template.rb:232:in synchronize'
actionview (4.2.6) lib/action_view/template.rb:232:in
编译!'
actionview (4.2.6) lib/action_view/template.rb:144:in block in render'
activesupport (4.2.6) lib/active_support/notifications.rb:166:in
仪器'
请帮忙。
我找到了答案。在我的导航栏 div 中,我不得不像这样从 <%= %> 中使用 "class = "。
<ul>
<li class = <%= is_active?("home") %> ><%= link_to 'Home', {:controller => 'pages', :action => 'home'} %></li>
<li class = <%= is_active?("about") %>><%= link_to 'About Us', {:controller => 'pages', :action => 'about'} %></li>
<li class = <%= is_active?("contact") %>><%= link_to 'Contact Us', {:controller => 'pages', :action => 'contact'} %></li>
</ul>
我只是第一次在 Rails 上尝试 jRuby。
在我的项目中,我想在导航栏中遍历 root/app/views/pages 下的三个页面。
我的导航栏是
<div class ="navbar">
<ul>
<li <%= class = is_active?("home") %> ><%= link_to 'Home', {:controller => 'pages', :action => 'home'} %></li>
<li><%= link_to 'About Us', {:controller => 'pages', :action => 'about'} %></li>
<li><%= link_to 'Contact Us', {:controller => 'pages', :action => 'contact'} %></li>
</ul>
</div>
我的 CSS 文件包含
.navbar .active {
background-color: #4CAF50;
color: white;
}
经过一番谷歌搜索后,我创建了一个助手
module PagesHelper
def is_active?(page_name)
"active" if params[:action] == page_name
end
end
在 project_root/app/helpers/pages_helper.rb 中,以便根据我当前所在的页面在导航栏项目中突出显示。
这给了我
app/views/layouts/application.html.erb:18: 语法错误,意外的 '='
...@output_buffer.append=( class = is_active?("home") );@输出...
... ^
actionview (4.2.6) lib/action_view/template.rb:296:in module_eval'
actionview (4.2.6) lib/action_view/template.rb:296:in
编译'
actionview (4.2.6) lib/action_view/template.rb:245:in block (2 levels) in compile!'
activesupport (4.2.6) lib/active_support/notifications.rb:166:in
仪器'
actionview (4.2.6) lib/action_view/template.rb:333:in instrument'
actionview (4.2.6) lib/action_view/template.rb:244:in
阻止编译!'
actionview (4.2.6) lib/action_view/template.rb:232:in synchronize'
actionview (4.2.6) lib/action_view/template.rb:232:in
编译!'
actionview (4.2.6) lib/action_view/template.rb:144:in block in render'
activesupport (4.2.6) lib/active_support/notifications.rb:166:in
仪器'
请帮忙。
我找到了答案。在我的导航栏 div 中,我不得不像这样从 <%= %> 中使用 "class = "。
<ul>
<li class = <%= is_active?("home") %> ><%= link_to 'Home', {:controller => 'pages', :action => 'home'} %></li>
<li class = <%= is_active?("about") %>><%= link_to 'About Us', {:controller => 'pages', :action => 'about'} %></li>
<li class = <%= is_active?("contact") %>><%= link_to 'Contact Us', {:controller => 'pages', :action => 'contact'} %></li>
</ul>