سؤال

أنا غير آمن قليلاً عن محلول الخبز الخاص بي. يتم تعريف الأسماء والروابط في كل إجراء وحدة تحكم:

<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()

سؤال: بما أنني لست ذكيًا - هل يمكن لهذا النوع من النظام أن يؤدي إلى Desaster في مكان ما على الطريق؟ هل هذا (بشكل صارخ) غير فعال؟

هل كانت مفيدة؟

المحلول

هذا في الغالب مسألة رأي ، ولكن على أي حال:

  1. لا أريد هذا المنطق في عرض. ربما قمنا بذلك ، لكنه يصبح فوضويًا بسرعة.
  2. الكود غير آمن مقابل التغييرات المستقبلية التي تؤثر على عمق الشجرة.
  3. بدلا من المتغيرات المرتبطة *_name و *_link, ، أقترح استخدام الكائنات المناسبة على أي حال ، مع بعض link_to وظائف.

قد تجد الحلقة 162 من Railscasts من الاهتمام بحل جميل يحصل عليه

<% for page in @page.ancestors.reverse %>
  <%= link_to h(page.name), page %> &gt;
<% end %>

نصائح أخرى

قائمة فتات الخبز هي نمط متكرر في معظم تطبيقات القضبان. لحل هذه المشكلة ، قمت بإنشاء وأصدر مكونًا إضافيًا يسمى 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>

حتى لو كنت لا ترغب في استخدام البرنامج المساعد ، فإنني أشجعك على إلقاء نظرة عليه. إنه مفتوح المصدر ويمكنك الحصول على فكرة عن تطبيقك.

لقد صنعت جوهرة اسمها جريتيل هذا هو البرنامج المساعد 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 %>

في تطبيقك/طرق العرض/التخطيطات/application.html.erb:

<%= breadcrumbs pretext: "You are here: " %>

لا تستخدم أي ملحقات مكونات فقط للاختراق. يوفر هذا الرابط طريقة فعالة لإنشاء فتات الخبز.

http://szeryf.wordpress.com/2008/06/13/asy-and-flexible-breadcrumbs-for-roils/

على الرغم من أنها منشور قديم جدًا ، إلا أنه لا يزال يعمل.

هنا نهجان:

تقسيم عنوان URL وعرضه

حل أكثر مرونة يتم تنفيذه في وحدة التحكم حيث تقوم بإعداد فتات الخبز في وحدة التحكم: فتات خبز سهلة ومرنة للقضبان

يمكنك أيضا استخدام أريان 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 يتم تخزين كل ذلك في ملف تكوين واحد. إذا كنت ترغب في القيام ببعض التصحيحات وتفضل التكوين في مكان واحد ، أعتقد أنه أفضل حل على الإطلاق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top