Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 链接帮助程序、当前页面和导航_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 链接帮助程序、当前页面和导航

Ruby on rails 链接帮助程序、当前页面和导航,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正试图通过检查控制器,在要选择的页面上保留一个选项卡。 也就是说,显示产品控制器的任何页面都应保持产品选项卡处于选中状态。 我似乎找不到正确的方法。 我正在考虑制作一个helper方法,但是将helper放入我的link\u到helper中似乎有点棘手。以下是我对如何使其工作的猜测: <%= link_to "Products", products_path, current_controller?('products') ? :class => 'selected' %>

我正试图通过检查控制器,在要选择的页面上保留一个选项卡。 也就是说,显示
产品
控制器的任何页面都应保持
产品
选项卡处于选中状态。 我似乎找不到正确的方法。 我正在考虑制作一个helper方法,但是将helper放入我的
link\u到
helper中似乎有点棘手。以下是我对如何使其工作的猜测:

<%= link_to "Products", products_path, current_controller?('products') ? :class => 'selected' %>
”已选择“%”

有人有更好的主意吗?

而且问题不会只出现在一个地方,你会有许多选项卡,每个选项卡都会有一些规则,规定哪些控制器+动作组合将被激活/选择

这是一个常见的问题,有些人也为此编写了“插件”

我建议你写信给助手。制作你自己的迷你DSL。自己决定什么是容易看的、好看的:

<%= link_to_tab_for("Products", products_path, :controller => "sss", :action => "", :other_html_options => {})

当然,不妨尝试一下你喜欢的上述方法

谢谢你的帮助,我正在做类似的事情。法学博士
def link_to_tab_for(name, path, options)
  controller = options.delete(:controller)
  action = options.delete(:controller)
  klass = [].push(options[:class]).compact
  if current_controller?(controller) && (action ? current_action?(action) : true)
    klass.push("selected")
  end
  options[:class] = klass.empty ? "" : klass.join(" ")
  link_to(name, path, options)
end