ブレッドクラムソリューションについて少し不安があります。名前とリンクは、各コントローラーアクションで定義されます。
<a href="http://localhost:3000/">Home</a>
<% if defined? @l1_link %>
> <a href="<%= @l1_link%>"><%= @l1_name %></a>
<% if defined? @l2_link %>
> <a href="<%= @l2_link%>"><%= @l2_name %></a>
<% end %>
<% end %>
このように私は使用することができます:
@l1_link = user_path()
質問:私はそれほど賢くないので、この種のシステムは将来どこかで災害につながる可能性がありますか?これは(ひどく)非効率的ですか?
これは主に意見の問題ですが、とにかく:
*_name
および*_link
、とにかく適切なオブジェクトを使用することをお勧めします。いくつかのlink_to
機能。あなたは Railscastsのエピソード162 でうまくいく素晴らしい解決策に興味があるかもしれません
<% for page in @page.ancestors.reverse %>
<%= link_to h(page.name), page %> >
<% end %>
ブレッドクラムメニューは、ほとんどのRailsアプリケーションで繰り返し発生するパターンです。この問題を解決するために、 breadcrumbs_on_Rails というプラグインを作成してリリースしました。
コントローラでブレッドクラムを定義します
class MyController
add_breadcrumb "home", root_path
add_breadcrumb "my", my_path
def index
# ...
add_breadcrumb "index", index_path
end
end
ビューにレンダリングします。
<!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>
プラグインを使用したくない場合でも、プラグインを見てみることをお勧めします。これはオープンソースであり、アプリのアイデアをつかむことができます。
Gretel という名前のgemを作成しました。これはRuby on Railsブレッドクラムを作成するためのプラグインです。ブレッドクラムは別の構成で構成されます。ファイルとビューで選択されます。
例config/breadcrumbs.rb
:
crumb :root do
link "Home", root_path
end
crumb :projects do
link "Projects", projects_path
end
crumb :project do |project|
link project.name, project_path(project)
parent :projects
end
crumb :project_issues do |project|
link "Issues", project_issues_path(project)
parent :project, project
end
crumb :issue do |issue|
link issue.name, issue_path(issue)
parent :project_issues, issue.project
end
あなたの見解では:
<% breadcrumb :issue, @issue %>
App/views/layouts/application.html.erb:
<%= breadcrumbs pretext: "You are here: " %>
ブレッドクラム専用のプラグインは使用しないでください。このリンクは、ブレッドクラムを生成するための効率的な方法を提供します。
http://szeryf.wordpress.com/2008/06/13/easy-and-flexible-breadcrumbs-for-Rails/
非常に古い投稿ですが、それでも機能します。
Arianeを使用することもできます http://github.com/simonc/ariane
これを使用すると、段落内のリンクとして、またはul/liとして、あらゆる種類のブレッドクラムを生成できます:)
特定のものが必要な場合は、独自のレンダラーを作成できます。
使い方はとても簡単です。これをbefore_filter
に追加するだけです。
ariane.add 'Home', root_path # in the app controller to have it everywhere
ariane.add 'Some Page', some_path
crumble
宝石のフォークをしました。構成オプションがほとんどなく、放棄されているように見えますが、breadcrumbs_on_Rails
またはgretel
に切り替えようとすると、ビューまたはコントローラーに多くの行を追加する必要があることに気付きました(そして、それらの多く)が、crumble
を使用すると、すべて1つの構成ファイルに保存されます。いくつかのパッチを実行し、1つの場所で構成することを好む場合は、これがこれまでで最高のソリューションだと思います。