add_breadcrumb需要url路径中的变量,但是如何?

时间:2013-08-29 14:00:07

标签: twitter-bootstrap ruby-on-rails-3.2

我一直在努力让我的面包屑给我正确的url路径回到父视图。我在我的控制器中尝试了许多不同的变体,但没有一个想要在url路径中给我对象变量

add_breadcrumb "Roller Coaster Rules", "/amusement_parks/#{@amusement_park_id}/amusement_park_rules/#{@amusement_park_rule_id}/roller_coaster_rules"
add_breadcrumb "Roller Coaster Rules", "/amusement_parks/" + @amusement_park_id + "/amusement_park_rules/" + @amusement_park_rule_id + "roller_coaster_rules"
add_breadcrumb "Roller Coaster Rules", "/amusement_parks/" + amusement_park_id + "/amusement_park_rules/" + amusement_park_rule_id + "roller_coaster_rules"

add_breadcrumb "Roller Coaster Rules", "/amusement_parks/#{@amusement_park.id}/amusement_park_rules/#{@amusement_park_rule.id}/roller_coaster_rules"
add_breadcrumb "Roller Coaster Rules", "/amusement_parks/" + @amusement_park.id + "/amusement_park_rules/" + @amusement_park_rule.id + "roller_coaster_rules"
add_breadcrumb "Roller Coaster Rules", "/amusement_parks/" + amusement_park.id + "/amusement_park_rules/" + amusement_park_rule.id + "roller_coaster_rules"

add_breadcrumb "Roller Coaster Rules", "/amusement_parks/#{:amusement_park_id}/amusement_park_rules/#{:amusement_park_rule_id}/roller_coaster_rules"
add_breadcrumb "Roller Coaster Rules", "/amusement_parks/" + :amusement_park_id + "/amusement_park_rules/" + :amusement_park_rule_id + "roller_coaster_rules"

add_breadcrumb "Roller Coaster Rules", amusement_parks_amusement_park_id_amusement_park_rules_amusement_park_rule_id_roller_coaster_rules_path
add_breadcrumb "Roller Coaster Rules", amusement_parks_amusement_park_rules_roller_coaster_rules_path

我正在尝试在面包屑中获得类似于[http:// localhost:3000 / amusement_parks / 5 / amusement_park_rules / 1 / roller_coaster_rules /]的链接的最终结果

我到底在想什么?

Ruby 1.8.7,Rails 3.2.12,Debian 5,Twitter Bootstrap,在Oracle VM上运行

2 个答案:

答案 0 :(得分:0)

看看breadcrumbs_on_rails这对你很有用,因为它有助于在rails应用程序中创建痕迹导航菜单。下面的代码段来自GitHub页面:

class MyController

  add_breadcrumb "home", :root_path
  add_breadcrumb "my", :my_path
  #call add_breadcrumb to push elem
  #on to the breadcrumb stack
  #takes two arguments

  def index
    # ...

    add_breadcrumb "index", index_path
  end

end

<强>应用/ layouts.html.erb

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title>untitled</title>
</head>

<body>
  <%= render_breadcrumbs %>
</body>
</html>

答案 1 :(得分:0)

我知道这是一个古老的问题,但在breadcrumbs_on_rails上你可以用名字或路径写一个proc 例如:

add_breadcrumb "Roller Coaster Rules", -> (c) { c.amusement_parks_amusement_park_rules_roller_coaster_rules_path(c.params[:amusement_park_id]) }

我真的建议你使用Gretel,这比动态路径的breadcrumbs_on_rails更好。

  

我正在开发一个gem来自动转换所有breadcrumbs_on_rails   定义(add_breadcrumb)到Gretel的设计,如果你想帮助我BreadcrumbsOnRailsToGretel